{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Python 开发工具的选择\n",
    "\n",
    "\n",
    "常见的 Python 开发工具主要有 Anaconda、Visual Studio Cord、PyCharm、Jupyter Notebook 、JupyterLab、 Spyder 以及各种文本编辑器等\n",
    "http://c.biancheng.net/view/7752.html\n",
    "\n",
    "# Jupyter 基本语法\n",
    "\n",
    "## 快捷键\n",
    "- A 当前区域的上面插入一个代码框\n",
    "- B 在当前区域下面插入代码框\n",
    "- H 查看所有的快捷键\n",
    "- L 显示隐藏行标\n",
    "- X 剪切选中的单元\n",
    "- C 复制选中的单元\n",
    "- V 粘贴单元格\n",
    "- Y 切换到代码格式\n",
    "- M 切换到markdowm 模式\n",
    "- DD 删除选中的单元\n",
    "- Tab 补齐代码或者缩进\n",
    "- Ctrl+Enter 运行 光标留在当前\n",
    "- Ctrl+S 保存文件\n",
    "- Ctrl+Z 恢复删除的内容\n",
    "- Shift+Enter 运行 光标进入下个编辑框\n",
    "- Shift+tab 函数提示\n",
    "\n",
    "- Enter 换行\n",
    "## 魔法命令 \n",
    "- Ipython 中的特殊命令，为常见的任务提供便利\n",
    "- %lsmagic 列出所有的魔法命令\n",
    "- %lsmagic\n",
    "- %pwd 显示当前路径\n",
    "- %run 运行文件 %run f:/files.py\n",
    "- %%write 写文件\n",
    "- %load 导入文件\n",
    "\n",
    "\n",
    "# Markdown 语法\n",
    "\n",
    "Markdown 教程 https://www.runoob.com/markdown/md-tutorial.html\n",
    "Markdown是一种轻量级标记语言，创始人为约翰·格鲁伯（英语：John Gruber）。 它允许人们使用易读易写的纯文本格式编写文档，然后转换成有效的XHTML（或者HTML）文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。\n",
    "由于Markdown的轻量化、易读易写特性，并且对于图片，图表、数学式都有支持，目前许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。 如GitHub、Reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书等，甚至还能被使用来撰写电子书。\n",
    "\n",
    "## 基本命令:\n",
    "### 命令模式和Markdown模式转换 \n",
    "- Markdown 在非编辑区域按 M\n",
    "- 代码模式 在非编辑区域按 Y\n",
    "### 图片和网址链接\n",
    "- 链接网址:\n",
    "[百度](www.sina.com.cn)\n",
    "- Markdown 图片语法\n",
    "![图片](http://pic.netbian.com/uploads/allimg/180826/113958-153525479855be.jpg)\n",
    "\n",
    "### 公式编写\n",
    "- 公式居中 $$y=2+x$$\n",
    "$$\\frac{2} {x+y}$$\n",
    "\n",
    "### 注释 \n",
    "（~下的点）\n",
    "```\n",
    "python\n",
    "if __name __== \"__mian__\"\n",
    "```\n",
    "\n",
    "### Markdown 标题语法\n",
    "- #一级标题\n",
    "- ##二级标题\n",
    "- ###三级标题\n",
    "(#后加空格)\n",
    "### Markdown 强调语法\n",
    "**加粗**\n",
    "*斜体* \n",
    "- 显示圆点\n",
    "### Markdown 引用语法\n",
    "> 显示竖线\n",
    "->> >可以嵌套\n",
    "\n",
    "### Markdown 列表语法\n",
    "- 示例\n",
    "\n",
    "\n",
    "# Jupyter Notebook / Anaconda 安装 升级\n",
    "\n",
    "https://www.anaconda.com/products/individual\n",
    "\n",
    " >conda update conda\n",
    " >conda update anaconda \n",
    " >conda update anaconda-navigator\n",
    " >conda update --all  更新所有的库\n",
    " \n",
    " - Python所有库的升级 \n",
    " - pip 升级\n",
    " >python -m pip install --upgrade pip\n",
    " >pip install --upgrade pip\n",
    " \n",
    "\n",
    "\n",
    "\n",
    "# PyEcharts 库使用基本说明 \n",
    "## pyecharts库 安装\n",
    ">pip install pyecharts\n",
    "## pyEcharts库示例\n",
    "https://gallery.pyecharts.org/#/README\n",
    "    \n",
    "https://gallery.pyecharts.org/#/README\n",
    "\n",
    "地图库安装\n",
    " > pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-countries-pypkg\n",
    " \n",
    "  >pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-provinces-pypkg\n",
    "  \n",
    "  >pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-cities-pypkg\n",
    "\n",
    "  >pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-counties-pypkg\n",
    "\n",
    "  >pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-misc-pypkg\n",
    "\n",
    "  >pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-united-kingdom-pypkg#如果提示缺少这个就安装一下\n",
    "\n",
    " > pip  install pyecharts_snapshot\n",
    "\n",
    "\n",
    "## 参数设置\n",
    "https://pyecharts.org/#/zh-cn/intro\n",
    "## pyEcharts 示例在jupyter notebook环境中显示的说明：\n",
    "　pyEcharts 示例在jupyter notebook环境中显示的说明：\n",
    " \n",
    "    1.注释掉 c内部的.render()\n",
    "    2.在体外加上\n",
    "        c.render_notebook()\n",
    "        c.render(\"文件名.html\")\n",
    "    3.顺序不能改变\n",
    "\n",
    "    示例：\n",
    "    from pyecharts import options as opts\n",
    "    from pyecharts.charts import Liquid\n",
    "    c = (\n",
    "        Liquid()\n",
    "        .add(\"lq\", [0.6, 0.7])\n",
    "        .set_global_opts(title_opts=opts.TitleOpts(title=\"Liquid-基本示例\"))\n",
    "        # .render(\"liquid_base.html\")\n",
    "    )\n",
    "    c.render_notebook()\n",
    "    c.render(\"liquid_base.html\")\n",
    "\n",
    "  ## 离线运行。\n",
    "   如果不安装echarts.js文件，离线状态将无法在此环境渲染或者输出到html文件中，且没有任何错误提示。\n",
    "   \n",
    "   要使PyEcharts在离线状态下显示各种图形，需要下载echarts.js文件\n",
    "   \n",
    "   下载地址https://echarts.apache.org/zh/builder.html\n",
    "   \n",
    "   选择所有图形，然后 取消“代码压缩”，之后下载，存放在当前目录下。\n",
    "   js文件大约2.5m\n",
    "   ## python 程序的编译\n",
    "   参见：http://c.biancheng.net/view/2690.html\n",
    "   安装 PyInstalle\n",
    "    Python 默认并不包含 PyInstaller 模块，因此需要自行安装 PyInstaller 模块。\n",
    "   >pip install pyinstaller\n",
    "\n",
    "    安装 PyInstaller 模块与安装其他 Python 模块一样，使用 pip 命令安装即可。在命令行输入如下命令：\n",
    "    pip install pyinstaller\n",
    "    强烈建议使用 pip 在线安装的方式来安装 PyInstaller 模块，不要使用离线包的方式来安装，因为 PyInstaller 模块还依赖其他模块，pip 在安装 PyInstaller 模块时会先安装它的依赖模块。\n",
    "    运行上面命令，应该看到如下输出结果：\n",
    "    Successfully installed pyinstaller-x.x.x\n",
    "    其中的 x.x.x 代表 PyInstaller 的版本。\n",
    "    在 PyInstaller 模块安装成功之后，在 Python 的安装目录下的 Scripts(D:\\Python\\Python36\\Scripts) 目录下会增加一个 pyinstaller.exe 程序，接下来就可以使用该工具将 Python 程序生成 EXE 程序了。\n",
    "    PyInstaller生成可执行程序\n",
    "    \n",
    "# 实用的Jupyter Notebook扩展插件\n",
    "## 安装\n",
    "\n",
    ">pip install jupyter_nbextensions_configurator jupyter_contrib_nbextensions\n",
    "\n",
    ">jupyter contrib nbextension install --user\n",
    "\n",
    ">jupyter nbextensions_configurator enable --user\n",
    "## 插件说明\n",
    "nbextensions插件说明\n",
    "\n",
    "- (some) LaTeX environments for Jupyter : 支持更多的Latex元素\n",
    "- 2to3 Converter : 将Python2代码转换为Python3代码的工具\n",
    "- Addbefore : 在当前单元格前加入空单元格的功能\n",
    "- Autopep8 : 代码格式化的工具(需要安装autopep8包)\n",
    "- Autosavetime : 可设置自动保存的时间间隔\n",
    "- Autoscroll : 设置屏幕自动滚动阈值的工具\n",
    "- Cell Filter : 依据标签过滤单元格的工具\n",
    "- Code Font Size : 设置代码字体大小的工具\n",
    "- Code preffify : 代码美化的工具(需要安装yapf包)\n",
    "- Codefolding : 增加折叠代码的功能(包括Python依据缩进折叠、其他代码依据方括号折叠、依据注释折叠)\n",
    "- Codefolding in Editor :\n",
    "- CodeMirror mode extensions :\n",
    "- Collapsible Headings : 存储markdown标题的折叠情况(在下一次打开的时候重新加载这点状态)\n",
    "- Comment/Uncomment Hotkey : # 增加注释/取消注释的热键\n",
    "- contrib_nbextensions_help_item : 添加帮助菜单\n",
    "- datestamper : 将当前日期和时间粘贴到单元格中的工具\n",
    "- Equation Auto Numbering : 公式自动编号工具\n",
    "- ExecuteTime : 记录上一次运行代码单元的时间以及运行花费的时间\n",
    "- Execution Dependencies : 记录单元格之间依赖关系的工具\n",
    "- Exercise : 隐藏/显示单元格的功能(可以与Exercise2同时使用)\n",
    "- Exercise2 : 隐藏/显示单元格的功能(可以与Exercise同时使用)\n",
    "- Export Embedded HTML : 将notebook导出为HTML文件的工具\n",
    "- Freeze : 提供单元格锁定、只读相关功能- \n",
    "- Gist-it : 一键发布Github的gist功能\n",
    "- Help panel : 在工具栏中增加显示帮助说明的按钮\n",
    "- Hide Header : 增加隐藏标题栏、菜单栏和工具栏的功能\n",
    "- Hide input : 在工具栏中增加隐藏指定代码单元的功能\n",
    "- Hide input all : 在工具栏中增加隐藏所有代码单元的功能\n",
    "- Highlight selected word : 高亮显示被选中的对象以及所有代码单元中该对象的所有实例\n",
    "- hightlighter : 在工具栏中增加荧光笔功能，可以高亮显示框选的内容\n",
    "- Hinterland : 自动补全功能\n",
    "- Initialization cells : 在工具栏中增加运行所有被框选为“初始化代码单元”的代码单元\n",
    "- insort formatter : 排序代码单元中导入的包(需要安装isort包)\n",
    "- jupyter-js-widgets/extension :\n",
    "- Keyboard shortcut editor : 创建/修改/删除Jupyter的快捷键\n",
    "- Launch QTConsole : 使用QTConsole内核\n",
    "- Limit Output : 显示代码单元输出的文本或HTML的字符数\n",
    "- Live Markdown Preview :\n",
    "- Load Tex macros :\n",
    "- Move selected cells: 在工具栏中增加上下移动单元格的功能\n",
    "- Navigation-Hotkeys : 增加用于导航的快捷键\n",
    "- Nbextensions dashboard tab :\n",
    "- Nbextensions edit menu item :\n",
    "- nb Translate : 在工具栏中增加语言翻译工具\n",
    "- Notify : 增加在Jupyter内核空闲时的通知提示功能(适合运行很耗时的情况)\n",
    "- Printview : 在工具栏中增加将当前notebook输出为html或pdf的功能\n",
    "- Python Markdown : 允许使用{{x}}的方法来直接输出结果\n",
    "- Rubberband : 允许进行多个单元的选择\n",
    "- Ruler : 增加标尺功能\n",
    "- Ruler in Editor :\n",
    "- Runtools : 在工具栏中增加了更多运行各个单元的方法\n",
    "- Scratchpad : 增加便笺式单元，可以针对当前内核执行代码，而无需修改notebook中的内容\n",
    "- ScrollDown : 自动在选中单元格时向下滚动\n",
    "- Select CodeMirror Keymap : 使用CodeMirror获取键盘映射，可以禁用非Jupyter的其他浏览器快捷键\n",
    "- SKILL Syntax : CodeMirror的Skill模块\n",
    "- Skip-Traceback : 跳过报错的路径追踪，只显示错误名称和类型的摘要\n",
    "- Snippets : 在工具栏中增加添加指定代码单元的功能\n",
    "- Snippets Menu : 在菜单栏中增加可自定义的菜单栏，用以插入代码片段\n",
    "- pellchecker : 拼写检查，高亮显示拼写错误的单词\n",
    "- Split Cells Notebook : 增加拆分单元格的命令\n",
    "- - Table of Contents(2) : 增加浮动目录功能\n",
    "- table_beautifier : 美化输出的单元格\n",
    "- Toggle all line numbers : 在工具栏中增加一个控制所有单元格行号是否显示的工具\n",
    "- Tree Filter : 在Jupyter笔记本文件树页面中增加按文件名过滤的功能\n",
    "- Variable Inspector : 在工具栏中增加变量检查的功能\n",
    "- zenmode : 增加Zenmode功能扩展"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 代码版本控制\n",
    "基本工具：\n",
    "- >git\n",
    "- >GitKraken\n",
    "- >GitHub\n",
    "- >Gitee\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# RGB颜色代码值参考\n",
    "\n",
    "https://www.matools.com/color\n",
    "\n",
    "[网页调色板_RGB颜色代码值参考](https://www.matools.com/color)\n",
    "\n",
    "\n",
    "离线网页调色板_RGB颜色代码值参考: file:///C:/Users/Administrator.SKY-20180705TEP/Documents/RGB.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/json": {
       "cell": {
        "!": "OSMagics",
        "HTML": "Other",
        "SVG": "Other",
        "bash": "Other",
        "capture": "ExecutionMagics",
        "cmd": "Other",
        "debug": "ExecutionMagics",
        "file": "Other",
        "html": "DisplayMagics",
        "javascript": "DisplayMagics",
        "js": "DisplayMagics",
        "latex": "DisplayMagics",
        "markdown": "DisplayMagics",
        "perl": "Other",
        "prun": "ExecutionMagics",
        "pypy": "Other",
        "python": "Other",
        "python2": "Other",
        "python3": "Other",
        "ruby": "Other",
        "script": "ScriptMagics",
        "sh": "Other",
        "svg": "DisplayMagics",
        "sx": "OSMagics",
        "system": "OSMagics",
        "time": "ExecutionMagics",
        "timeit": "ExecutionMagics",
        "writefile": "OSMagics"
       },
       "line": {
        "alias": "OSMagics",
        "alias_magic": "BasicMagics",
        "autoawait": "AsyncMagics",
        "autocall": "AutoMagics",
        "automagic": "AutoMagics",
        "autosave": "KernelMagics",
        "bookmark": "OSMagics",
        "cd": "OSMagics",
        "clear": "KernelMagics",
        "cls": "KernelMagics",
        "colors": "BasicMagics",
        "conda": "PackagingMagics",
        "config": "ConfigMagics",
        "connect_info": "KernelMagics",
        "copy": "Other",
        "ddir": "Other",
        "debug": "ExecutionMagics",
        "dhist": "OSMagics",
        "dirs": "OSMagics",
        "doctest_mode": "BasicMagics",
        "echo": "Other",
        "ed": "Other",
        "edit": "KernelMagics",
        "env": "OSMagics",
        "gui": "BasicMagics",
        "hist": "Other",
        "history": "HistoryMagics",
        "killbgscripts": "ScriptMagics",
        "ldir": "Other",
        "less": "KernelMagics",
        "load": "CodeMagics",
        "load_ext": "ExtensionMagics",
        "loadpy": "CodeMagics",
        "logoff": "LoggingMagics",
        "logon": "LoggingMagics",
        "logstart": "LoggingMagics",
        "logstate": "LoggingMagics",
        "logstop": "LoggingMagics",
        "ls": "Other",
        "lsmagic": "BasicMagics",
        "macro": "ExecutionMagics",
        "magic": "BasicMagics",
        "matplotlib": "PylabMagics",
        "mkdir": "Other",
        "more": "KernelMagics",
        "notebook": "BasicMagics",
        "page": "BasicMagics",
        "pastebin": "CodeMagics",
        "pdb": "ExecutionMagics",
        "pdef": "NamespaceMagics",
        "pdoc": "NamespaceMagics",
        "pfile": "NamespaceMagics",
        "pinfo": "NamespaceMagics",
        "pinfo2": "NamespaceMagics",
        "pip": "PackagingMagics",
        "popd": "OSMagics",
        "pprint": "BasicMagics",
        "precision": "BasicMagics",
        "prun": "ExecutionMagics",
        "psearch": "NamespaceMagics",
        "psource": "NamespaceMagics",
        "pushd": "OSMagics",
        "pwd": "OSMagics",
        "pycat": "OSMagics",
        "pylab": "PylabMagics",
        "qtconsole": "KernelMagics",
        "quickref": "BasicMagics",
        "recall": "HistoryMagics",
        "rehashx": "OSMagics",
        "reload_ext": "ExtensionMagics",
        "ren": "Other",
        "rep": "Other",
        "rerun": "HistoryMagics",
        "reset": "NamespaceMagics",
        "reset_selective": "NamespaceMagics",
        "rmdir": "Other",
        "run": "ExecutionMagics",
        "save": "CodeMagics",
        "sc": "OSMagics",
        "set_env": "OSMagics",
        "store": "StoreMagics",
        "sx": "OSMagics",
        "system": "OSMagics",
        "tb": "ExecutionMagics",
        "time": "ExecutionMagics",
        "timeit": "ExecutionMagics",
        "unalias": "OSMagics",
        "unload_ext": "ExtensionMagics",
        "who": "NamespaceMagics",
        "who_ls": "NamespaceMagics",
        "whos": "NamespaceMagics",
        "xdel": "NamespaceMagics",
        "xmode": "BasicMagics"
       }
      },
      "text/plain": [
       "Available line magics:\n",
       "%alias  %alias_magic  %autoawait  %autocall  %automagic  %autosave  %bookmark  %cd  %clear  %cls  %colors  %conda  %config  %connect_info  %copy  %ddir  %debug  %dhist  %dirs  %doctest_mode  %echo  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %macro  %magic  %matplotlib  %mkdir  %more  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %pip  %popd  %pprint  %precision  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %ren  %rep  %rerun  %reset  %reset_selective  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode\n",
       "\n",
       "Available cell magics:\n",
       "%%!  %%HTML  %%SVG  %%bash  %%capture  %%cmd  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%markdown  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile\n",
       "\n",
       "Automagic is ON, % prefix IS NOT needed for line magics."
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%lsmagic \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#  柱状图：\n",
    "## 带最大值和最小值标注\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\xlrd\\xlsx.py:266: PendingDeprecationWarning: This method will be removed in future versions.  Use 'tree.iter()' or 'list(tree.iter())' instead.\n",
      "  for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\xlrd\\xlsx.py:312: PendingDeprecationWarning: This method will be removed in future versions.  Use 'tree.iter()' or 'list(tree.iter())' instead.\n",
      "  for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"3ac84b9991e84fcfad6eb29fd79ea98a\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_3ac84b9991e84fcfad6eb29fd79ea98a = echarts.init(\n",
       "                    document.getElementById('3ac84b9991e84fcfad6eb29fd79ea98a'), 'dark', {renderer: 'canvas'});\n",
       "                var option_3ac84b9991e84fcfad6eb29fd79ea98a = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u6d51\\u5357\\u964d\\u96e8\\u91cf\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                915.3,\n",
       "                613.9,\n",
       "                1054.7,\n",
       "                974.0,\n",
       "                629.3,\n",
       "                904.1,\n",
       "                970.3,\n",
       "                559.3,\n",
       "                920.2,\n",
       "                813.6,\n",
       "                564.1,\n",
       "                685.7,\n",
       "                738.9,\n",
       "                895.3,\n",
       "                445.0,\n",
       "                712.5,\n",
       "                529.6,\n",
       "                583.8,\n",
       "                799.7,\n",
       "                797.8,\n",
       "                742.6,\n",
       "                586.1,\n",
       "                875.5,\n",
       "                805.3,\n",
       "                759.7,\n",
       "                653.9,\n",
       "                653.9,\n",
       "                578.2,\n",
       "                652.5,\n",
       "                618.3,\n",
       "                583.0,\n",
       "                552.0,\n",
       "                763.9,\n",
       "                718.1,\n",
       "                810.8,\n",
       "                969.5,\n",
       "                724.9,\n",
       "                629.7,\n",
       "                467.4,\n",
       "                642.4,\n",
       "                748.9,\n",
       "                554.0,\n",
       "                633.7,\n",
       "                893.1,\n",
       "                880.7,\n",
       "                721.9,\n",
       "                571.8,\n",
       "                857.6,\n",
       "                561.2,\n",
       "                501.5,\n",
       "                583.8,\n",
       "                739.2,\n",
       "                652.4,\n",
       "                705.2,\n",
       "                822.2,\n",
       "                576.3,\n",
       "                672.3,\n",
       "                718.7,\n",
       "                657.7,\n",
       "                1036.6,\n",
       "                477.9,\n",
       "                786.0,\n",
       "                788.0,\n",
       "                362.9,\n",
       "                573.4,\n",
       "                968.0,\n",
       "                464.4,\n",
       "                482.6,\n",
       "                873.8,\n",
       "                \"\\u4e1c\\u9675\"\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u65b0\\u6c11\\u964d\\u96e8\\u91cf\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                \"\",\n",
       "                \"\",\n",
       "                \"\",\n",
       "                \"\",\n",
       "                617.2,\n",
       "                657.4,\n",
       "                695.1,\n",
       "                456.0,\n",
       "                762.5,\n",
       "                825.3,\n",
       "                507.2,\n",
       "                496.2,\n",
       "                500.2,\n",
       "                810.0,\n",
       "                510.3,\n",
       "                527.6,\n",
       "                380.2,\n",
       "                497.1,\n",
       "                659.6,\n",
       "                627.0,\n",
       "                632.9,\n",
       "                486.0,\n",
       "                626.9,\n",
       "                716.9,\n",
       "                720.0,\n",
       "                605.7,\n",
       "                709.9,\n",
       "                544.4,\n",
       "                817.8,\n",
       "                401.9,\n",
       "                445.7,\n",
       "                362.9,\n",
       "                543.4,\n",
       "                667.3,\n",
       "                693.3,\n",
       "                811.3,\n",
       "                604.9,\n",
       "                536.2,\n",
       "                378.4,\n",
       "                634.3,\n",
       "                854.7,\n",
       "                403.3,\n",
       "                476.7,\n",
       "                1012.8,\n",
       "                690.2,\n",
       "                499.3,\n",
       "                673.0,\n",
       "                817.5,\n",
       "                489.7,\n",
       "                417.7,\n",
       "                351.6,\n",
       "                357.0,\n",
       "                537.6,\n",
       "                511.6,\n",
       "                616.7,\n",
       "                319.1,\n",
       "                408.3,\n",
       "                594.5,\n",
       "                613.0,\n",
       "                1042.3,\n",
       "                588.4,\n",
       "                854.7,\n",
       "                653.8,\n",
       "                380.6,\n",
       "                445.2,\n",
       "                782.4,\n",
       "                566.8,\n",
       "                296.2,\n",
       "                731.5,\n",
       "                \"\\u65b0\\u6c11\"\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u6d51\\u5357\\u964d\\u96e8\\u91cf\",\n",
       "                \"\\u65b0\\u6c11\\u964d\\u96e8\\u91cf\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u6d51\\u5357\\u964d\\u96e8\\u91cf\": true,\n",
       "                \"\\u65b0\\u6c11\\u964d\\u96e8\\u91cf\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"left\": \"right\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"nameRotate\": 90,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"1951\\u5e74\",\n",
       "                \"1952\\u5e74\",\n",
       "                \"1953\\u5e74\",\n",
       "                \"1954\\u5e74\",\n",
       "                \"1955\\u5e74\",\n",
       "                \"1956\\u5e74\",\n",
       "                \"1957\\u5e74\",\n",
       "                \"1958\\u5e74\",\n",
       "                \"1959\\u5e74\",\n",
       "                \"1960\\u5e74\",\n",
       "                \"1961\\u5e74\",\n",
       "                \"1962\\u5e74\",\n",
       "                \"1963\\u5e74\",\n",
       "                \"1964\\u5e74\",\n",
       "                \"1965\\u5e74\",\n",
       "                \"1966\\u5e74\",\n",
       "                \"1967\\u5e74\",\n",
       "                \"1968\\u5e74\",\n",
       "                \"1969\\u5e74\",\n",
       "                \"1970\\u5e74\",\n",
       "                \"1971\\u5e74\",\n",
       "                \"1972\\u5e74\",\n",
       "                \"1973\\u5e74\",\n",
       "                \"1974\\u5e74\",\n",
       "                \"1975\\u5e74\",\n",
       "                \"1976\\u5e74\",\n",
       "                \"1977\\u5e74\",\n",
       "                \"1978\\u5e74\",\n",
       "                \"1979\\u5e74\",\n",
       "                \"1980\\u5e74\",\n",
       "                \"1981\\u5e74\",\n",
       "                \"1982\\u5e74\",\n",
       "                \"1983\\u5e74\",\n",
       "                \"1984\\u5e74\",\n",
       "                \"1985\\u5e74\",\n",
       "                \"1986\\u5e74\",\n",
       "                \"1987\\u5e74\",\n",
       "                \"1988\\u5e74\",\n",
       "                \"1989\\u5e74\",\n",
       "                \"1990\\u5e74\",\n",
       "                \"1991\\u5e74\",\n",
       "                \"1992\\u5e74\",\n",
       "                \"1993\\u5e74\",\n",
       "                \"1994\\u5e74\",\n",
       "                \"1995\\u5e74\",\n",
       "                \"1996\\u5e74\",\n",
       "                \"1997\\u5e74\",\n",
       "                \"1998\\u5e74\",\n",
       "                \"1999\\u5e74\",\n",
       "                \"2000\\u5e74\",\n",
       "                \"2001\\u5e74\",\n",
       "                \"2002\\u5e74\",\n",
       "                \"2003\\u5e74\",\n",
       "                \"2004\\u5e74\",\n",
       "                \"2005\\u5e74\",\n",
       "                \"2006\\u5e74\",\n",
       "                \"2007\\u5e74\",\n",
       "                \"2008\\u5e74\",\n",
       "                \"2009\\u5e74\",\n",
       "                \"2010\\u5e74\",\n",
       "                \"2011\\u5e74\",\n",
       "                \"2012\\u5e74\",\n",
       "                \"2013\\u5e74\",\n",
       "                \"2014\\u5e74\",\n",
       "                \"2015\\u5e74\",\n",
       "                \"2016\\u5e74\",\n",
       "                \"2017\\u5e74\",\n",
       "                \"2018\\u5e74\",\n",
       "                \"2019\\u5e74\",\n",
       "                \"\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5e74\\u964d\\u96e8\\u91cf\",\n",
       "            \"link\": \"https://www.baidu.com\",\n",
       "            \"subtext\": \"mm\",\n",
       "            \"left\": \"center\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"dataZoom\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"slider\",\n",
       "        \"realtime\": true,\n",
       "        \"start\": 20,\n",
       "        \"end\": 80,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"zoomLock\": false,\n",
       "        \"filterMode\": \"filter\"\n",
       "    }\n",
       "};\n",
       "                chart_3ac84b9991e84fcfad6eb29fd79ea98a.setOption(option_3ac84b9991e84fcfad6eb29fd79ea98a);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x51ca888>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 示例1 一组数据\n",
    "\n",
    "\n",
    "import xlrd\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts import options as opts\n",
    "from pyecharts.faker import Faker\n",
    "from pyecharts.globals import ThemeType\n",
    "\n",
    "bar = Bar()\n",
    "\"\"\"\n",
    "x=[\"浑南\", \"沈北\", \"苏家屯\", \"辽中\", \"新民\",\"康平\", \"法库\"]\n",
    "y1=[5, 12, 18, 7, 15, 7, 9,10]\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"10月21日降雨量\", y1,itemstyle_opts = opts.ItemStyleOpts(color = \"#106473\"))\n",
    "\"\"\"\n",
    "\n",
    "# execl文件读取方法\n",
    "filename=\"沈阳常规气象站年降水量（1951-2019）.xlsx\"\n",
    "book = xlrd.open_workbook(filename)\n",
    "sheet1 = book.sheets()[0]\n",
    "nrows = sheet1.nrows\n",
    "# print('表格总行数',nrows)\n",
    "ncols = sheet1.ncols\n",
    "# print('表格总列数',ncols)\n",
    "\n",
    "row1_values = sheet1.row_values(0)\n",
    "\n",
    "#print('第1行值',row1_values)\n",
    "col1_values = sheet1.col_values(colx=0,start_rowx=1)\n",
    "#print('第1列值',col1_values)\n",
    "x=col1_values\n",
    "col2_values = sheet1.col_values(colx=1,start_rowx=1)\n",
    "col3_values = sheet1.col_values(colx=2,start_rowx=1)\n",
    "#print('第2列值',col2_values)\n",
    "\n",
    "y1=col2_values\n",
    "y2=col3_values \n",
    "\n",
    "'''\n",
    "#逐项例举法\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"年降雨量\", y1,itemstyle_opts = opts.ItemStyleOpts(color = \"#106473\"))\n",
    "'''\n",
    "\n",
    "# 链式写法\n",
    "bar = (\n",
    "    Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))  # LIGHT\n",
    "     .add_xaxis(x)\n",
    "     .add_yaxis(\"浑南降雨量\", y1)\n",
    "     .add_yaxis(\"新民降雨量\", y2)\n",
    "    #下行的设置 与+6的设置方法相同，增加了更详细的参数\n",
    "     .set_global_opts(title_opts=opts.TitleOpts(title=\"降雨量\", subtitle=\"mm\"))   \n",
    "    \n",
    ")\n",
    "\n",
    "# 标注标题、放大滑块\n",
    "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"年降雨量\", subtitle=\"mm\", \n",
    "                                              title_link = \"https://www.baidu.com\",\n",
    "                                              pos_left = 'center'),                                         \n",
    "                    xaxis_opts=opts.AxisOpts( name_rotate = 90),\n",
    "                   datazoom_opts = opts.DataZoomOpts(is_show = True),\n",
    "                   legend_opts = opts.LegendOpts(pos_left = \"right\"),)\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# 标注最大值和最小值\n",
    "bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False),markpoint_opts = opts.MarkPointOpts(\n",
    "                       data = [opts.MarkPointItem(type_ = \"max\", name = \"最大值\"),\n",
    "                           opts.MarkPointItem(type_ = \"min\", name = \"最小值\"),  \n",
    "                  ]))\n",
    "\n",
    "# render 会生成本地 HTML 文件，默认会在当前目录生成 render.html 文件\n",
    "# 也可以传入路径参数，如 bar.render(\"mycharts.html\")\n",
    "bar.render(\"bar.html\")\n",
    "bar.render_notebook()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 柱状图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"5ebdcd8d366b473fbae68adda6719000\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_5ebdcd8d366b473fbae68adda6719000 = echarts.init(\n",
       "                    document.getElementById('5ebdcd8d366b473fbae68adda6719000'), 'light', {renderer: 'canvas'});\n",
       "                var option_5ebdcd8d366b473fbae68adda6719000 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"10\\u670821\\u65e5\\u964d\\u96e8\\u91cf\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                5,\n",
       "                12,\n",
       "                18,\n",
       "                7,\n",
       "                15,\n",
       "                7,\n",
       "                9\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"8\\u670816\\u65e5\\u964d\\u96e8\\u91cf\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                15,\n",
       "                6,\n",
       "                45,\n",
       "                20,\n",
       "                35,\n",
       "                66,\n",
       "                34\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"10\\u670821\\u65e5\\u964d\\u96e8\\u91cf\",\n",
       "                \"8\\u670816\\u65e5\\u964d\\u96e8\\u91cf\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"10\\u670821\\u65e5\\u964d\\u96e8\\u91cf\": true,\n",
       "                \"8\\u670816\\u65e5\\u964d\\u96e8\\u91cf\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u6d51\\u5357\",\n",
       "                \"\\u6c88\\u5317\",\n",
       "                \"\\u82cf\\u5bb6\\u5c6f\",\n",
       "                \"\\u8fbd\\u4e2d\",\n",
       "                \"\\u5eb7\\u5e73\",\n",
       "                \"\\u6cd5\\u5e93\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u964d\\u96e8\\u91cf\",\n",
       "            \"subtext\": \"mm\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_5ebdcd8d366b473fbae68adda6719000.setOption(option_5ebdcd8d366b473fbae68adda6719000);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4e9e1c8>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 两组数据\n",
    "\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts import options as opts\n",
    "# 内置主题类型可查看 pyecharts.globals.ThemeType\n",
    "from pyecharts.globals import ThemeType\n",
    "\n",
    "bar = (\n",
    "    Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))\n",
    "     .add_xaxis([\"浑南\", \"沈北\", \"苏家屯\", \"辽中\", \"康平\", \"法库\"])\n",
    "     .add_yaxis(\"10月21日降雨量\", [5, 12, 18, 7, 15, 7, 9])\n",
    "    .add_yaxis(\"8月16日降雨量\", [15, 6, 45, 20, 35, 66,34])\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"降雨量\", subtitle=\"mm\"))\n",
    ")\n",
    "bar.render(\"bar2.html\")\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 柱状图3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"83edf0ccae43489799cadd9c8c2e5921\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_83edf0ccae43489799cadd9c8c2e5921 = echarts.init(\n",
       "                    document.getElementById('83edf0ccae43489799cadd9c8c2e5921'), 'white', {renderer: 'canvas'});\n",
       "                var option_83edf0ccae43489799cadd9c8c2e5921 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                114,\n",
       "                55,\n",
       "                27,\n",
       "                101,\n",
       "                125,\n",
       "                27,\n",
       "                105\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                57,\n",
       "                134,\n",
       "                137,\n",
       "                129,\n",
       "                145,\n",
       "                60,\n",
       "                49\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u886c\\u886b\",\n",
       "                \"\\u6bdb\\u8863\",\n",
       "                \"\\u9886\\u5e26\",\n",
       "                \"\\u88e4\\u5b50\",\n",
       "                \"\\u98ce\\u8863\",\n",
       "                \"\\u9ad8\\u8ddf\\u978b\",\n",
       "                \"\\u889c\\u5b50\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u67d0\\u5546\\u573a\\u9500\\u552e\\u60c5\\u51b5\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_83edf0ccae43489799cadd9c8c2e5921.setOption(option_83edf0ccae43489799cadd9c8c2e5921);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x678d208>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts.charts import Bar\n",
    "from pyecharts import options as opts\n",
    "\n",
    "# V1 版本开始支持链式调用\n",
    "bar = (\n",
    "    Bar()\n",
    "    .add_xaxis([\"衬衫\", \"毛衣\", \"领带\", \"裤子\", \"风衣\", \"高跟鞋\", \"袜子\"])\n",
    "    .add_yaxis(\"商家A\", [114, 55, 27, 101, 125, 27, 105])\n",
    "    .add_yaxis(\"商家B\", [57, 134, 137, 129, 145, 60, 49])\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"某商场销售情况\"))\n",
    ")\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "code_folding": []
   },
   "source": [
    "## 带标志线的 柱状图Bar - Bar_markline_type"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"2810ff269e0f4127bee63c28644bbdac\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_2810ff269e0f4127bee63c28644bbdac = echarts.init(\n",
       "                    document.getElementById('2810ff269e0f4127bee63c28644bbdac'), 'white', {renderer: 'canvas'});\n",
       "                var option_2810ff269e0f4127bee63c28644bbdac = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                114,\n",
       "                55,\n",
       "                27,\n",
       "                101,\n",
       "                125,\n",
       "                27,\n",
       "                105\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                57,\n",
       "                134,\n",
       "                137,\n",
       "                129,\n",
       "                145,\n",
       "                60,\n",
       "                49\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u886c\\u886b\",\n",
       "                \"\\u6bdb\\u8863\",\n",
       "                \"\\u9886\\u5e26\",\n",
       "                \"\\u88e4\\u5b50\",\n",
       "                \"\\u98ce\\u8863\",\n",
       "                \"\\u9ad8\\u8ddf\\u978b\",\n",
       "                \"\\u889c\\u5b50\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u67d0\\u5546\\u573a\\u9500\\u552e\\u60c5\\u51b5\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_2810ff269e0f4127bee63c28644bbdac.setOption(option_2810ff269e0f4127bee63c28644bbdac);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x6777188>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "c = (\n",
    "    Bar()\n",
    "    .add_xaxis(Faker.choose())\n",
    "    .add_yaxis(\"商家A\", Faker.values())\n",
    "    .add_yaxis(\"商家B\", Faker.values())\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Bar-MarkLine（指定类型）\"))\n",
    "    .set_series_opts(\n",
    "        label_opts=opts.LabelOpts(is_show=False),\n",
    "        markline_opts=opts.MarkLineOpts(\n",
    "            data=[\n",
    "                opts.MarkLineItem(type_=\"min\", name=\"最小值\"),\n",
    "                opts.MarkLineItem(type_=\"max\", name=\"最大值\"),\n",
    "                opts.MarkLineItem(type_=\"average\", name=\"平均值\"),\n",
    "            ]\n",
    "        ),\n",
    "    )\n",
    "   \n",
    "    .render(\"Bar - Bar_markline_type.html\")\n",
    ")\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 水球图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'C:\\\\Users\\\\Administrator.SKY-20180705TEP\\\\liquid_base.html'"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Liquid\n",
    "\n",
    "c = (\n",
    "    Liquid()\n",
    "    .add(\"lq\", [0.6, 0.7])\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Liquid-基本示例\"))\n",
    "    # .render(\"liquid_base.html\")\n",
    ")\n",
    "\n",
    "c.render_notebook()\n",
    "c.render(\"liquid_base.html\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'echarts-liquidfill':'https://assets.pyecharts.org/assets/echarts-liquidfill.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"e76ef30376234936b7d6a4a9b93a1d39\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'echarts-liquidfill'], function(echarts) {\n",
       "                var chart_e76ef30376234936b7d6a4a9b93a1d39 = echarts.init(\n",
       "                    document.getElementById('e76ef30376234936b7d6a4a9b93a1d39'), 'white', {renderer: 'canvas'});\n",
       "                var option_e76ef30376234936b7d6a4a9b93a1d39 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"liquidFill\",\n",
       "            \"name\": \"lq\",\n",
       "            \"data\": [\n",
       "                0.3,\n",
       "                0.7\n",
       "            ],\n",
       "            \"waveAnimation\": true,\n",
       "            \"animationDuration\": 2000,\n",
       "            \"animationDurationUpdate\": 1000,\n",
       "            \"color\": [\n",
       "                \"#294D99\",\n",
       "                \"#156ACF\",\n",
       "                \"#1598ED\",\n",
       "                \"#45BDFF\"\n",
       "            ],\n",
       "            \"shape\": \"diamond\",\n",
       "            \"backgroundStyle\": {},\n",
       "            \"outline\": {\n",
       "                \"show\": false,\n",
       "                \"borderDistance\": 8\n",
       "            },\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"inside\",\n",
       "                \"margin\": 8,\n",
       "                \"fontSize\": 50\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [],\n",
       "            \"selected\": {},\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Liquid-Shape-Diamond\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_e76ef30376234936b7d6a4a9b93a1d39.setOption(option_e76ef30376234936b7d6a4a9b93a1d39);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4e6c6c8>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Liquid\n",
    "from pyecharts.globals import SymbolType\n",
    "\n",
    "c = (\n",
    "    Liquid()\n",
    "    .add(\"lq\", [0.3, 0.7], is_outline_show=False, shape=SymbolType.DIAMOND)\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Liquid-Shape-Diamond\"))\n",
    "    #.render(\"liquid_shape_diamond.html\")\n",
    ")\n",
    "\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 地理坐标 Geo\n",
    "## Geo - Geo_chart_countries_js"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n"
     ]
    },
    {
     "ename": "URLError",
     "evalue": "<urlopen error [Errno 11004] getaddrinfo failed>",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mgaierror\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36mdo_open\u001b[1;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[0;32m   1349\u001b[0m                 h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[1;32m-> 1350\u001b[1;33m                           encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[0;32m   1351\u001b[0m             \u001b[1;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# timeout error\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mrequest\u001b[1;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[0;32m   1276\u001b[0m         \u001b[1;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1277\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1278\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36m_send_request\u001b[1;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[0;32m   1322\u001b[0m             \u001b[0mbody\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'body'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1323\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1324\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mendheaders\u001b[1;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[0;32m   1271\u001b[0m             \u001b[1;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1272\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1273\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36m_send_output\u001b[1;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[0;32m   1031\u001b[0m         \u001b[1;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1032\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1033\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, data)\u001b[0m\n\u001b[0;32m    971\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 972\u001b[1;33m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    973\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mconnect\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m   1438\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1439\u001b[1;33m             \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1440\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mconnect\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    943\u001b[0m         self.sock = self._create_connection(\n\u001b[1;32m--> 944\u001b[1;33m             (self.host,self.port), self.timeout, self.source_address)\n\u001b[0m\u001b[0;32m    945\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msock\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msetsockopt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIPPROTO_TCP\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTCP_NODELAY\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[1;34m(address, timeout, source_address)\u001b[0m\n\u001b[0;32m    706\u001b[0m     \u001b[0merr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 707\u001b[1;33m     \u001b[1;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mgetaddrinfo\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mport\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mSOCK_STREAM\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    708\u001b[0m         \u001b[0maf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msa\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mres\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\socket.py\u001b[0m in \u001b[0;36mgetaddrinfo\u001b[1;34m(host, port, family, type, proto, flags)\u001b[0m\n\u001b[0;32m    751\u001b[0m     \u001b[0maddrlist\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 752\u001b[1;33m     \u001b[1;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[1;32min\u001b[0m \u001b[0m_socket\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetaddrinfo\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mport\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfamily\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    753\u001b[0m         \u001b[0maf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msa\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mres\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mgaierror\u001b[0m: [Errno 11004] getaddrinfo failed",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[1;31mURLError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-6-91faa78576a6>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m     \u001b[0mregister_url\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"https://echarts-maps.github.io/echarts-countries-js/\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      7\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\datasets\\__init__.py\u001b[0m in \u001b[0;36mregister_url\u001b[1;34m(asset_url)\u001b[0m\n\u001b[0;32m    112\u001b[0m         \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 113\u001b[1;33m             \u001b[1;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    114\u001b[0m         \u001b[0mfiles\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\datasets\\__init__.py\u001b[0m in \u001b[0;36mregister_url\u001b[1;34m(asset_url)\u001b[0m\n\u001b[0;32m    109\u001b[0m         \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 110\u001b[1;33m             \u001b[0mcontents\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0murllib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0murlopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mregistry\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    111\u001b[0m             \u001b[0mcontents\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mjson\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloads\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcontents\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36murlopen\u001b[1;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[0;32m    221\u001b[0m         \u001b[0mopener\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 222\u001b[1;33m     \u001b[1;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    223\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36mopen\u001b[1;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[0;32m    524\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 525\u001b[1;33m         \u001b[0mresponse\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    526\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36m_open\u001b[1;34m(self, req, data)\u001b[0m\n\u001b[0;32m    542\u001b[0m         result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[1;32m--> 543\u001b[1;33m                                   '_open', req)\n\u001b[0m\u001b[0;32m    544\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[1;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[0;32m    502\u001b[0m             \u001b[0mfunc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 503\u001b[1;33m             \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    504\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[1;34m(self, req)\u001b[0m\n\u001b[0;32m   1392\u001b[0m             return self.do_open(http.client.HTTPSConnection, req,\n\u001b[1;32m-> 1393\u001b[1;33m                 context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[0;32m   1394\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36mdo_open\u001b[1;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[0;32m   1351\u001b[0m             \u001b[1;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# timeout error\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1352\u001b[1;33m                 \u001b[1;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0merr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1353\u001b[0m             \u001b[0mr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mURLError\u001b[0m: <urlopen error [Errno 11004] getaddrinfo failed>",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[1;31mgaierror\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36mdo_open\u001b[1;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[0;32m   1349\u001b[0m                 h.request(req.get_method(), req.selector, req.data, headers,\n\u001b[1;32m-> 1350\u001b[1;33m                           encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0m\u001b[0;32m   1351\u001b[0m             \u001b[1;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# timeout error\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mrequest\u001b[1;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[0;32m   1276\u001b[0m         \u001b[1;34m\"\"\"Send a complete request to the server.\"\"\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1277\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_send_request\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1278\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36m_send_request\u001b[1;34m(self, method, url, body, headers, encode_chunked)\u001b[0m\n\u001b[0;32m   1322\u001b[0m             \u001b[0mbody\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_encode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'body'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1323\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbody\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1324\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mendheaders\u001b[1;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[0;32m   1271\u001b[0m             \u001b[1;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1272\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencode_chunked\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mencode_chunked\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1273\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36m_send_output\u001b[1;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[0;32m   1031\u001b[0m         \u001b[1;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_buffer\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1032\u001b[1;33m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1033\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36msend\u001b[1;34m(self, data)\u001b[0m\n\u001b[0;32m    971\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 972\u001b[1;33m                 \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    973\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mconnect\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m   1438\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1439\u001b[1;33m             \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1440\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\http\\client.py\u001b[0m in \u001b[0;36mconnect\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    943\u001b[0m         self.sock = self._create_connection(\n\u001b[1;32m--> 944\u001b[1;33m             (self.host,self.port), self.timeout, self.source_address)\n\u001b[0m\u001b[0;32m    945\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msock\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msetsockopt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msocket\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIPPROTO_TCP\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msocket\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTCP_NODELAY\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\socket.py\u001b[0m in \u001b[0;36mcreate_connection\u001b[1;34m(address, timeout, source_address)\u001b[0m\n\u001b[0;32m    706\u001b[0m     \u001b[0merr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 707\u001b[1;33m     \u001b[1;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mgetaddrinfo\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mport\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mSOCK_STREAM\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    708\u001b[0m         \u001b[0maf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msa\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mres\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\socket.py\u001b[0m in \u001b[0;36mgetaddrinfo\u001b[1;34m(host, port, family, type, proto, flags)\u001b[0m\n\u001b[0;32m    751\u001b[0m     \u001b[0maddrlist\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 752\u001b[1;33m     \u001b[1;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[1;32min\u001b[0m \u001b[0m_socket\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetaddrinfo\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mport\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfamily\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mflags\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    753\u001b[0m         \u001b[0maf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msa\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mres\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mgaierror\u001b[0m: [Errno 11004] getaddrinfo failed",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[1;31mURLError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-6-91faa78576a6>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      9\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     10\u001b[0m     \u001b[0mssl\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_create_default_https_context\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mssl\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_create_unverified_context\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 11\u001b[1;33m     \u001b[0mregister_url\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"https://echarts-maps.github.io/echarts-countries-js/\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     12\u001b[0m \"\"\" 原示例\n\u001b[0;32m     13\u001b[0m geo = (\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\datasets\\__init__.py\u001b[0m in \u001b[0;36mregister_url\u001b[1;34m(asset_url)\u001b[0m\n\u001b[0;32m    111\u001b[0m             \u001b[0mcontents\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mjson\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloads\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcontents\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    112\u001b[0m         \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 113\u001b[1;33m             \u001b[1;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    114\u001b[0m         \u001b[0mfiles\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    115\u001b[0m         \u001b[0mpinyin_names\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\datasets\\__init__.py\u001b[0m in \u001b[0;36mregister_url\u001b[1;34m(asset_url)\u001b[0m\n\u001b[0;32m    108\u001b[0m         \u001b[0mregistry\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0masset_url\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34m\"/registry.json\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    109\u001b[0m         \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 110\u001b[1;33m             \u001b[0mcontents\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0murllib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrequest\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0murlopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mregistry\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    111\u001b[0m             \u001b[0mcontents\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mjson\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloads\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcontents\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    112\u001b[0m         \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36murlopen\u001b[1;34m(url, data, timeout, cafile, capath, cadefault, context)\u001b[0m\n\u001b[0;32m    220\u001b[0m     \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    221\u001b[0m         \u001b[0mopener\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_opener\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 222\u001b[1;33m     \u001b[1;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    223\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    224\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0minstall_opener\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mopener\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36mopen\u001b[1;34m(self, fullurl, data, timeout)\u001b[0m\n\u001b[0;32m    523\u001b[0m             \u001b[0mreq\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmeth\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    524\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 525\u001b[1;33m         \u001b[0mresponse\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_open\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mreq\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    526\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    527\u001b[0m         \u001b[1;31m# post-process response\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36m_open\u001b[1;34m(self, req, data)\u001b[0m\n\u001b[0;32m    541\u001b[0m         \u001b[0mprotocol\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mreq\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    542\u001b[0m         result = self._call_chain(self.handle_open, protocol, protocol +\n\u001b[1;32m--> 543\u001b[1;33m                                   '_open', req)\n\u001b[0m\u001b[0;32m    544\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    545\u001b[0m             \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36m_call_chain\u001b[1;34m(self, chain, kind, meth_name, *args)\u001b[0m\n\u001b[0;32m    501\u001b[0m         \u001b[1;32mfor\u001b[0m \u001b[0mhandler\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mhandlers\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    502\u001b[0m             \u001b[0mfunc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mhandler\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmeth_name\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 503\u001b[1;33m             \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    504\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    505\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36mhttps_open\u001b[1;34m(self, req)\u001b[0m\n\u001b[0;32m   1391\u001b[0m         \u001b[1;32mdef\u001b[0m \u001b[0mhttps_open\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreq\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1392\u001b[0m             return self.do_open(http.client.HTTPSConnection, req,\n\u001b[1;32m-> 1393\u001b[1;33m                 context=self._context, check_hostname=self._check_hostname)\n\u001b[0m\u001b[0;32m   1394\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1395\u001b[0m         \u001b[0mhttps_request\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mAbstractHTTPHandler\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdo_request_\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\ProgramData\\Anaconda3\\lib\\urllib\\request.py\u001b[0m in \u001b[0;36mdo_open\u001b[1;34m(self, http_class, req, **http_conn_args)\u001b[0m\n\u001b[0;32m   1350\u001b[0m                           encode_chunked=req.has_header('Transfer-encoding'))\n\u001b[0;32m   1351\u001b[0m             \u001b[1;32mexcept\u001b[0m \u001b[0mOSError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# timeout error\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1352\u001b[1;33m                 \u001b[1;32mraise\u001b[0m \u001b[0mURLError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0merr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1353\u001b[0m             \u001b[0mr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetresponse\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1354\u001b[0m         \u001b[1;32mexcept\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mURLError\u001b[0m: <urlopen error [Errno 11004] getaddrinfo failed>"
     ]
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Geo\n",
    "from pyecharts.datasets import register_url\n",
    "\n",
    "try:\n",
    "    register_url(\"https://echarts-maps.github.io/echarts-countries-js/\")\n",
    "except Exception:\n",
    "    import ssl\n",
    "\n",
    "    ssl._create_default_https_context = ssl._create_unverified_context\n",
    "    register_url(\"https://echarts-maps.github.io/echarts-countries-js/\")\n",
    "\"\"\" 原示例\n",
    "geo = (\n",
    "    Geo()\n",
    "    .add_schema(maptype=\"瑞士\")\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"中国\"))\n",
    "    .render(\"geo_chart_countries_js.html\")\n",
    "    )\n",
    "\"\"\"\n",
    "# 改变写法后可在notebook 环境显示。\n",
    "\n",
    "geo = Geo()\n",
    "geo .add_schema(maptype=\"瑞士\")\n",
    "geo.set_global_opts(title_opts=opts.TitleOpts(title=\"瑞士\"))\n",
    "#geo.render(\"geo_chart_countries_js.html\")\n",
    "geo.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Geo - Geo_lines_background"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'C:\\\\Users\\\\Administrator.SKY-20180705TEP\\\\geo_lines_background.html'"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Geo\n",
    "from pyecharts.globals import ChartType, SymbolType\n",
    "\n",
    "c = (\n",
    "    Geo()\n",
    "    .add_schema(\n",
    "        maptype=\"china\",\n",
    "        itemstyle_opts=opts.ItemStyleOpts(color=\"#323c48\", border_color=\"#111\"),\n",
    "    )\n",
    "    .add(\n",
    "        \"\",\n",
    "        [(\"广州\", 55), (\"北京\", 66), (\"杭州\", 77), (\"重庆\", 88)],\n",
    "        type_=ChartType.EFFECT_SCATTER,\n",
    "        color=\"white\",\n",
    "    )\n",
    "    .add(\n",
    "        \"geo\",\n",
    "        [(\"广州\", \"上海\"), (\"广州\", \"北京\"), (\"广州\", \"杭州\"), (\"广州\", \"重庆\")],\n",
    "        type_=ChartType.LINES,\n",
    "        effect_opts=opts.EffectOpts(\n",
    "            symbol=SymbolType.ARROW, symbol_size=6, color=\"blue\"\n",
    "        ),\n",
    "        linestyle_opts=opts.LineStyleOpts(curve=0.2),\n",
    "    )\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Geo-Lines-background\"))\n",
    "    #.render(\"geo_lines_background.html\")\n",
    ")\n",
    "c.render_notebook()\n",
    "c.render(\"geo_lines_background.html\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\Anaconda\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "D:\\Program Files\\Anaconda\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'china':'https://assets.pyecharts.org/assets/maps/china'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"87b3c3996304463b9081819690560f17\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'china'], function(echarts) {\n",
       "                var chart_87b3c3996304463b9081819690560f17 = echarts.init(\n",
       "                    document.getElementById('87b3c3996304463b9081819690560f17'), 'white', {renderer: 'canvas'});\n",
       "                var option_87b3c3996304463b9081819690560f17 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"map\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"mapType\": \"china\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5e7f\\u4e1c\",\n",
       "                    \"value\": 104\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5317\\u4eac\",\n",
       "                    \"value\": 80\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77\",\n",
       "                    \"value\": 43\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u897f\",\n",
       "                    \"value\": 21\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6e56\\u5357\",\n",
       "                    \"value\": 107\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6d59\\u6c5f\",\n",
       "                    \"value\": 97\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u82cf\",\n",
       "                    \"value\": 91\n",
       "                }\n",
       "            ],\n",
       "            \"roam\": true,\n",
       "            \"zoom\": 1,\n",
       "            \"showLegendSymbol\": true,\n",
       "            \"emphasis\": {}\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Map-\\u57fa\\u672c\\u793a\\u4f8b\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_87b3c3996304463b9081819690560f17.setOption(option_87b3c3996304463b9081819690560f17);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x219011a8948>"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Map\n",
    "from pyecharts.faker import Faker\n",
    "c = (\n",
    "    Map()\n",
    "    .add(\"商家A\", [list(z) for z in zip(Faker.provinces, Faker.values())], \"china\")\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Map-基本示例\"))\n",
    "    \n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 热力图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'china':'https://assets.pyecharts.org/assets/maps/china'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"482397e59c2f4e41aaa4faa593d879e6\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'china'], function(echarts) {\n",
       "                var chart_482397e59c2f4e41aaa4faa593d879e6 = echarts.init(\n",
       "                    document.getElementById('482397e59c2f4e41aaa4faa593d879e6'), 'white', {renderer: 'canvas'});\n",
       "                var option_482397e59c2f4e41aaa4faa593d879e6 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"heatmap\",\n",
       "            \"coordinateSystem\": \"geo\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5e7f\\u4e1c\",\n",
       "                    \"value\": [\n",
       "                        113.26653,\n",
       "                        23.132191,\n",
       "                        126\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5317\\u4eac\",\n",
       "                    \"value\": [\n",
       "                        116.407526,\n",
       "                        39.90403,\n",
       "                        23\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77\",\n",
       "                    \"value\": [\n",
       "                        121.473701,\n",
       "                        31.230416,\n",
       "                        150\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u897f\",\n",
       "                    \"value\": [\n",
       "                        115.909228,\n",
       "                        28.675696,\n",
       "                        61\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6e56\\u5357\",\n",
       "                    \"value\": [\n",
       "                        112.98381,\n",
       "                        28.112444,\n",
       "                        101\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6d59\\u6c5f\",\n",
       "                    \"value\": [\n",
       "                        120.152791,\n",
       "                        30.267446,\n",
       "                        62\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u82cf\",\n",
       "                    \"value\": [\n",
       "                        118.763232,\n",
       "                        32.061707,\n",
       "                        46\n",
       "                    ]\n",
       "                }\n",
       "            ],\n",
       "            \"pointSize\": 20,\n",
       "            \"blurSize\": 20,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"formatter\": function (params) {        return params.name + ' : ' + params.value[2];    },\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Geo-\\u70ed\\u529b\\u5730\\u56fe\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"visualMap\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"continuous\",\n",
       "        \"min\": 0,\n",
       "        \"max\": 100,\n",
       "        \"inRange\": {\n",
       "            \"color\": [\n",
       "                \"#50a3ba\",\n",
       "                \"#eac763\",\n",
       "                \"#d94e5d\"\n",
       "            ]\n",
       "        },\n",
       "        \"calculable\": true,\n",
       "        \"inverse\": false,\n",
       "        \"splitNumber\": 5,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"showLabel\": true,\n",
       "        \"itemWidth\": 20,\n",
       "        \"itemHeight\": 140,\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"geo\": {\n",
       "        \"map\": \"china\",\n",
       "        \"roam\": true,\n",
       "        \"emphasis\": {}\n",
       "    }\n",
       "};\n",
       "                chart_482397e59c2f4e41aaa4faa593d879e6.setOption(option_482397e59c2f4e41aaa4faa593d879e6);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x677bb08>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Geo\n",
    "from pyecharts.faker import Faker\n",
    "from pyecharts.globals import ChartType\n",
    "c = (\n",
    "    Geo()\n",
    "    .add_schema(maptype=\"china\")\n",
    "    .add(\n",
    "        \"\",\n",
    "        [list(z) for z in zip(Faker.provinces, Faker.values())],\n",
    "        type_=ChartType.HEATMAP,\n",
    "    )\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
    "    .set_global_opts(\n",
    "        visualmap_opts=opts.VisualMapOpts(),\n",
    "        title_opts=opts.TitleOpts(title=\"Geo-热力地图\"),\n",
    "    )\n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Map\n",
    "from pyecharts.faker import Faker\n",
    "c = (\n",
    "    Map()\n",
    "    .add(\"商家A\", [list(z) for z in zip(Faker.provinces, Faker.values())], \"china\")\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Map-基本示例\"))\n",
    "    \n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"6dae34c4d7b84852b89da3e22ccf3d4c\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_6dae34c4d7b84852b89da3e22ccf3d4c = echarts.init(\n",
       "                    document.getElementById('6dae34c4d7b84852b89da3e22ccf3d4c'), 'white', {renderer: 'canvas'});\n",
       "                var option_6dae34c4d7b84852b89da3e22ccf3d4c = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"blue\",\n",
       "        \"green\",\n",
       "        \"yellow\",\n",
       "        \"red\",\n",
       "        \"pink\",\n",
       "        \"orange\",\n",
       "        \"purple\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"pie\",\n",
       "            \"clockwise\": true,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u6cb3\\u9a6c\",\n",
       "                    \"value\": 65\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u87d2\\u86c7\",\n",
       "                    \"value\": 139\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u8001\\u864e\",\n",
       "                    \"value\": 73\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5927\\u8c61\",\n",
       "                    \"value\": 126\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5154\\u5b50\",\n",
       "                    \"value\": 124\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u718a\\u732b\",\n",
       "                    \"value\": 72\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u72ee\\u5b50\",\n",
       "                    \"value\": 130\n",
       "                }\n",
       "            ],\n",
       "            \"radius\": [\n",
       "                \"0%\",\n",
       "                \"75%\"\n",
       "            ],\n",
       "            \"center\": [\n",
       "                \"50%\",\n",
       "                \"50%\"\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8,\n",
       "                \"formatter\": \"{b}: {c}\"\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u6cb3\\u9a6c\",\n",
       "                \"\\u87d2\\u86c7\",\n",
       "                \"\\u8001\\u864e\",\n",
       "                \"\\u5927\\u8c61\",\n",
       "                \"\\u5154\\u5b50\",\n",
       "                \"\\u718a\\u732b\",\n",
       "                \"\\u72ee\\u5b50\"\n",
       "            ],\n",
       "            \"selected\": {},\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Pie-\\u8bbe\\u7f6e\\u989c\\u8272\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_6dae34c4d7b84852b89da3e22ccf3d4c.setOption(option_6dae34c4d7b84852b89da3e22ccf3d4c);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x4c1b5c8>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Pie\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "c = (\n",
    "    Pie()\n",
    "    .add(\"\", [list(z) for z in zip(Faker.choose(), Faker.values())])\n",
    "    .set_colors([\"blue\", \"green\", \"yellow\", \"red\", \"pink\", \"orange\", \"purple\"])\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Pie-设置颜色\"))\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}: {c}\"))\n",
    "    #.render(\"pie_set_color.html\")\n",
    ")\n",
    "\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\Anaconda\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "D:\\Program Files\\Anaconda\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"2a17330f7af5469192ffd3231f45a76b\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_2a17330f7af5469192ffd3231f45a76b = echarts.init(\n",
       "                    document.getElementById('2a17330f7af5469192ffd3231f45a76b'), 'white', {renderer: 'canvas'});\n",
       "                var option_2a17330f7af5469192ffd3231f45a76b = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"pie\",\n",
       "            \"clockwise\": true,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u6cb3\\u9a6c\",\n",
       "                    \"value\": 105\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u87d2\\u86c7\",\n",
       "                    \"value\": 87\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u8001\\u864e\",\n",
       "                    \"value\": 141\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5927\\u8c61\",\n",
       "                    \"value\": 84\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5154\\u5b50\",\n",
       "                    \"value\": 45\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u718a\\u732b\",\n",
       "                    \"value\": 62\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u72ee\\u5b50\",\n",
       "                    \"value\": 133\n",
       "                }\n",
       "            ],\n",
       "            \"radius\": [\n",
       "                \"0%\",\n",
       "                \"75%\"\n",
       "            ],\n",
       "            \"center\": [\n",
       "                \"50%\",\n",
       "                \"50%\"\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8,\n",
       "                \"formatter\": \"{b}: {c}\"\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u6cb3\\u9a6c\",\n",
       "                \"\\u87d2\\u86c7\",\n",
       "                \"\\u8001\\u864e\",\n",
       "                \"\\u5927\\u8c61\",\n",
       "                \"\\u5154\\u5b50\",\n",
       "                \"\\u718a\\u732b\",\n",
       "                \"\\u72ee\\u5b50\"\n",
       "            ],\n",
       "            \"selected\": {},\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Pie-\\u57fa\\u672c\\u793a\\u4f8b\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_2a17330f7af5469192ffd3231f45a76b.setOption(option_2a17330f7af5469192ffd3231f45a76b);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x2190121eb88>"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Pie\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "c = (\n",
    "    Pie()\n",
    "    .add(\"\", [list(z) for z in zip(Faker.choose(), Faker.values())])\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"Pie-基本示例\"))\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}: {c}\"))\n",
    "    #.render(\"pie_base.html\")\n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 折线图\n",
    "## 基本折线图\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"b26447d27b6442968860ea04eedf6d42\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_b26447d27b6442968860ea04eedf6d42 = echarts.init(\n",
       "                    document.getElementById('b26447d27b6442968860ea04eedf6d42'), 'white', {renderer: 'canvas'});\n",
       "                var option_b26447d27b6442968860ea04eedf6d42 = {\n",
       "    \"backgroundColor\": \"#B0C4DE\",\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u8bbf\\u95ee\\u91cf\",\n",
       "            \"connectNulls\": false,\n",
       "            \"symbol\": \"circle\",\n",
       "            \"symbolSize\": 10,\n",
       "            \"showSymbol\": true,\n",
       "            \"smooth\": false,\n",
       "            \"clip\": true,\n",
       "            \"step\": false,\n",
       "            \"data\": [\n",
       "                [\n",
       "                    \"1\\u65e5\",\n",
       "                    509\n",
       "                ],\n",
       "                [\n",
       "                    \"2\\u65e5\",\n",
       "                    917\n",
       "                ],\n",
       "                [\n",
       "                    \"3\\u65e5\",\n",
       "                    2455\n",
       "                ],\n",
       "                [\n",
       "                    \"4\\u65e5\",\n",
       "                    2610\n",
       "                ],\n",
       "                [\n",
       "                    \"5\\u65e5\",\n",
       "                    2719\n",
       "                ],\n",
       "                [\n",
       "                    \"6\\u65e5\",\n",
       "                    3033\n",
       "                ],\n",
       "                [\n",
       "                    \"7\\u65e5\",\n",
       "                    3044\n",
       "                ],\n",
       "                [\n",
       "                    \"8\\u65e5\",\n",
       "                    3085\n",
       "                ],\n",
       "                [\n",
       "                    \"9\\u65e5\",\n",
       "                    2708\n",
       "                ],\n",
       "                [\n",
       "                    \"10\\u65e5\",\n",
       "                    2809\n",
       "                ],\n",
       "                [\n",
       "                    \"11\\u65e5\",\n",
       "                    2117\n",
       "                ],\n",
       "                [\n",
       "                    \"12\\u65e5\",\n",
       "                    2000\n",
       "                ],\n",
       "                [\n",
       "                    \"13\\u65e5\",\n",
       "                    1455\n",
       "                ],\n",
       "                [\n",
       "                    \"14\\u65e5\",\n",
       "                    1210\n",
       "                ],\n",
       "                [\n",
       "                    \"15\\u65e5\",\n",
       "                    719\n",
       "                ],\n",
       "                [\n",
       "                    \"16\\u65e5\",\n",
       "                    733\n",
       "                ],\n",
       "                [\n",
       "                    \"17\\u65e5\",\n",
       "                    944\n",
       "                ],\n",
       "                [\n",
       "                    \"18\\u65e5\",\n",
       "                    2285\n",
       "                ],\n",
       "                [\n",
       "                    \"19\\u65e5\",\n",
       "                    2208\n",
       "                ],\n",
       "                [\n",
       "                    \"20\\u65e5\",\n",
       "                    3372\n",
       "                ],\n",
       "                [\n",
       "                    \"21\\u65e5\",\n",
       "                    3936\n",
       "                ],\n",
       "                [\n",
       "                    \"22\\u65e5\",\n",
       "                    3693\n",
       "                ],\n",
       "                [\n",
       "                    \"23\\u65e5\",\n",
       "                    2962\n",
       "                ],\n",
       "                [\n",
       "                    \"24\\u65e5\",\n",
       "                    2810\n",
       "                ],\n",
       "                [\n",
       "                    \"25\\u65e5\",\n",
       "                    3519\n",
       "                ],\n",
       "                [\n",
       "                    \"26\\u65e5\",\n",
       "                    2455\n",
       "                ],\n",
       "                [\n",
       "                    \"27\\u65e5\",\n",
       "                    2610\n",
       "                ],\n",
       "                [\n",
       "                    \"28\\u65e5\",\n",
       "                    2719\n",
       "                ],\n",
       "                [\n",
       "                    \"29\\u65e5\",\n",
       "                    2484\n",
       "                ],\n",
       "                [\n",
       "                    \"30\\u65e5\",\n",
       "                    2078\n",
       "                ]\n",
       "            ],\n",
       "            \"hoverAnimation\": true,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0\n",
       "            },\n",
       "            \"itemStyle\": {\n",
       "                \"color\": \"#9400D3\"\n",
       "            },\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 0\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u8bbf\\u95ee\\u91cf\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u8bbf\\u95ee\\u91cf\": true\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"1\\u65e5\",\n",
       "                \"2\\u65e5\",\n",
       "                \"3\\u65e5\",\n",
       "                \"4\\u65e5\",\n",
       "                \"5\\u65e5\",\n",
       "                \"6\\u65e5\",\n",
       "                \"7\\u65e5\",\n",
       "                \"8\\u65e5\",\n",
       "                \"9\\u65e5\",\n",
       "                \"10\\u65e5\",\n",
       "                \"11\\u65e5\",\n",
       "                \"12\\u65e5\",\n",
       "                \"13\\u65e5\",\n",
       "                \"14\\u65e5\",\n",
       "                \"15\\u65e5\",\n",
       "                \"16\\u65e5\",\n",
       "                \"17\\u65e5\",\n",
       "                \"18\\u65e5\",\n",
       "                \"19\\u65e5\",\n",
       "                \"20\\u65e5\",\n",
       "                \"21\\u65e5\",\n",
       "                \"22\\u65e5\",\n",
       "                \"23\\u65e5\",\n",
       "                \"24\\u65e5\",\n",
       "                \"25\\u65e5\",\n",
       "                \"26\\u65e5\",\n",
       "                \"27\\u65e5\",\n",
       "                \"28\\u65e5\",\n",
       "                \"29\\u65e5\",\n",
       "                \"30\\u65e5\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_b26447d27b6442968860ea04eedf6d42.setOption(option_b26447d27b6442968860ea04eedf6d42);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x676a808>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# https://mp.weixin.qq.com/s?__biz=MzUzMjczMDQ5OA==&mid=2247486609&idx=1&sn=492a2b74a13e3ffb5cd3468887783238&chksm=faaf8b7ccdd8026a552451d1211ff7e69fbeada72674bf34352b705241aec942ab5c23a6ff72&mpshare=1&scene=1&srcid=0927ztAbRCmmmIs55mHKv6po&sharer_sharetime=1601208124939&sharer_shareid=02c00284fab3e4c5e9417de504f50157&exportkey=AVVuiOoqOtx58mfOmISH79I%3D&pass_ticket=ugsx3w5e71JNOtD31yYDO9BQrtn8vwipRBcmYX9PrU8LE1Hk45vyONB5JBgT2OR2&wx_header=0#rd\n",
    "\n",
    "from pyecharts.charts import Bar\n",
    "import pyecharts.options as opts\n",
    "from pyecharts.charts import Line\n",
    "## Step1，导入pyecharts相关模块：\n",
    "#bar = Bar()\n",
    "\n",
    "x_data = [str(i)+'日' for i in range(1,31)]\n",
    "y_data = [509, 917, 2455, 2610, 2719, 3033, 3044, 3085, 2708, 2809, 2117,2000,1455,1210,719,\\\n",
    "        733,944,2285,2208,3372,3936,3693,2962,2810,3519,2455,2610,2719,2484,2078]\n",
    "y2_data = [\n",
    "            2136,3693,2962,3810,3519,3484,3915,3823,3455,4310,4019,3433,3544,3885,4208,3372,\\\n",
    "            3484,3915,3748,3675,4009,4433,3544,3285,4208,3372,3484,3915,3823,4265,4298]\n",
    "\n",
    "## Step2，造数  30 对(x,y)，数据比较简单\n",
    "\n",
    "c=(\n",
    "        Line(opts.InitOpts( bg_color = \"#B0C4DE\",   ))\n",
    "        \n",
    "    #  Step3，图形初始化配置\n",
    "    #  第一个问题：下面代码开始的一对括号作用是？有它我们可以随意换行，看起来更爽\n",
    "    #  第二个问题：InitOpts 是什么对象？ 这是options模块中的一个图形初始化相关的配置对象。\n",
    "\n",
    "\n",
    "\n",
    "        .add_xaxis(xaxis_data=x_data)     #Step4，添加 x 轴的数据\n",
    "        .add_yaxis(\n",
    "            y_axis=y_data,\n",
    "            series_name=\"访问量\",\n",
    "            symbol=\"circle\",\n",
    "            symbol_size = 10,\n",
    "            is_symbol_show=True,\n",
    "            label_opts=opts.LabelOpts(is_show=True),\n",
    "            itemstyle_opts=opts.ItemStyleOpts(\n",
    "                color = \"#9400D3\"  #\"#6f7de3\"   色系表 https://tool.oschina.net/commons?type=3\n",
    "            )\n",
    "        ) #y 轴的数据赋值给y_axis，同时做一些 y 轴属性配置\n",
    "        #.render(\"basic_line_chart.html\")\n",
    "\n",
    "\n",
    ")\n",
    "c.render_notebook()\n",
    "#c.render(\"basic_line_chart.html\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\Anaconda\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "D:\\Program Files\\Anaconda\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"5658db9c07da4f7f8ec3c111de5a2691\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_5658db9c07da4f7f8ec3c111de5a2691 = echarts.init(\n",
       "                    document.getElementById('5658db9c07da4f7f8ec3c111de5a2691'), 'white', {renderer: 'canvas'});\n",
       "                var option_5658db9c07da4f7f8ec3c111de5a2691 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u9010\\u6708\\u964d\\u96e8\\u91cf\",\n",
       "            \"connectNulls\": false,\n",
       "            \"symbol\": \"emptyCircle\",\n",
       "            \"symbolSize\": 4,\n",
       "            \"showSymbol\": true,\n",
       "            \"smooth\": false,\n",
       "            \"clip\": true,\n",
       "            \"step\": false,\n",
       "            \"data\": [\n",
       "                [\n",
       "                    \"1\",\n",
       "                    5\n",
       "                ],\n",
       "                [\n",
       "                    \"2\",\n",
       "                    6\n",
       "                ],\n",
       "                [\n",
       "                    \"3\",\n",
       "                    13\n",
       "                ],\n",
       "                [\n",
       "                    \"4\",\n",
       "                    32\n",
       "                ],\n",
       "                [\n",
       "                    \"5\",\n",
       "                    54\n",
       "                ],\n",
       "                [\n",
       "                    \"6\",\n",
       "                    71\n",
       "                ],\n",
       "                [\n",
       "                    \"7\",\n",
       "                    163\n",
       "                ],\n",
       "                [\n",
       "                    \"8\",\n",
       "                    200\n",
       "                ],\n",
       "                [\n",
       "                    \"9\",\n",
       "                    145\n",
       "                ],\n",
       "                [\n",
       "                    \"10\",\n",
       "                    76\n",
       "                ],\n",
       "                [\n",
       "                    \"11\",\n",
       "                    32\n",
       "                ],\n",
       "                [\n",
       "                    \"12\",\n",
       "                    12\n",
       "                ]\n",
       "            ],\n",
       "            \"hoverAnimation\": true,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0\n",
       "            },\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 0\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u9010\\u6708\\u964d\\u96e8\\u91cf\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u9010\\u6708\\u964d\\u96e8\\u91cf\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": false,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"type\": \"category\",\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"1\",\n",
       "                \"2\",\n",
       "                \"3\",\n",
       "                \"4\",\n",
       "                \"5\",\n",
       "                \"6\",\n",
       "                \"7\",\n",
       "                \"8\",\n",
       "                \"9\",\n",
       "                \"10\",\n",
       "                \"11\",\n",
       "                \"12\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"type\": \"value\",\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"axisTick\": {\n",
       "                \"show\": true,\n",
       "                \"alignWithLabel\": false,\n",
       "                \"inside\": false\n",
       "            },\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": true,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_5658db9c07da4f7f8ec3c111de5a2691.setOption(option_5658db9c07da4f7f8ec3c111de5a2691);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x2838ae62208>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pyecharts.options as opts\n",
    "from pyecharts.charts import Line\n",
    "\n",
    "\n",
    "x_data = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"]\n",
    "y_data = [820, 932, 901, 934, 1290, 1330, 1320]\n",
    "\n",
    "x_data = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"]\n",
    "y_data = [5, 6, 13, 32, 54, 71, 163,200,145,76,32,12,9]\n",
    "c=(\n",
    "    Line()\n",
    "    .set_global_opts(\n",
    "        tooltip_opts=opts.TooltipOpts(is_show=False),\n",
    "        xaxis_opts=opts.AxisOpts(type_=\"category\"),\n",
    "        yaxis_opts=opts.AxisOpts(\n",
    "            type_=\"value\",\n",
    "            axistick_opts=opts.AxisTickOpts(is_show=True),\n",
    "            splitline_opts=opts.SplitLineOpts(is_show=True),\n",
    "        ),\n",
    "    )\n",
    "    .add_xaxis(xaxis_data=x_data)\n",
    "    .add_yaxis(\n",
    "        series_name=\"逐月降雨量\",\n",
    "        y_axis=y_data,\n",
    "        symbol=\"emptyCircle\",\n",
    "        is_symbol_show=True,\n",
    "        label_opts=opts.LabelOpts(is_show=True),# 是否显示折线图上的数字。\n",
    "        \n",
    "    )\n",
    "    #.render(\"basic_line_chart.html\")\n",
    ")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 双折线\n",
    "Line - Temperature_change_line_chart"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"8e737ea6ead74a51884db72e881a9c05\" style=\"width:1000px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_8e737ea6ead74a51884db72e881a9c05 = echarts.init(\n",
       "                    document.getElementById('8e737ea6ead74a51884db72e881a9c05'), 'white', {renderer: 'canvas'});\n",
       "                var option_8e737ea6ead74a51884db72e881a9c05 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u6700\\u9ad8\\u6c14\\u6e29\",\n",
       "            \"connectNulls\": false,\n",
       "            \"symbolSize\": 4,\n",
       "            \"showSymbol\": true,\n",
       "            \"smooth\": false,\n",
       "            \"clip\": true,\n",
       "            \"step\": false,\n",
       "            \"data\": [\n",
       "                [\n",
       "                    \"\\u5468\\u4e00\",\n",
       "                    11\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e8c\",\n",
       "                    11\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e09\",\n",
       "                    15\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u56db\",\n",
       "                    13\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e94\",\n",
       "                    12\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u516d\",\n",
       "                    13\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u65e5\",\n",
       "                    10\n",
       "                ]\n",
       "            ],\n",
       "            \"hoverAnimation\": true,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"markLine\": {\n",
       "                \"silent\": false,\n",
       "                \"precision\": 2,\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"top\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u5e73\\u5747\\u503c\",\n",
       "                        \"type\": \"average\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 0\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"line\",\n",
       "            \"name\": \"\\u6700\\u4f4e\\u6c14\\u6e29\",\n",
       "            \"connectNulls\": false,\n",
       "            \"symbolSize\": 4,\n",
       "            \"showSymbol\": true,\n",
       "            \"smooth\": false,\n",
       "            \"clip\": true,\n",
       "            \"step\": false,\n",
       "            \"data\": [\n",
       "                [\n",
       "                    \"\\u5468\\u4e00\",\n",
       "                    1\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e8c\",\n",
       "                    -2\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e09\",\n",
       "                    2\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u56db\",\n",
       "                    5\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u4e94\",\n",
       "                    3\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u516d\",\n",
       "                    2\n",
       "                ],\n",
       "                [\n",
       "                    \"\\u5468\\u65e5\",\n",
       "                    0\n",
       "                ]\n",
       "            ],\n",
       "            \"hoverAnimation\": true,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"areaStyle\": {\n",
       "                \"opacity\": 0\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u5468\\u6700\\u4f4e\",\n",
       "                        \"x\": 1,\n",
       "                        \"y\": -1.5,\n",
       "                        \"value\": -2\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"markLine\": {\n",
       "                \"silent\": false,\n",
       "                \"precision\": 2,\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"top\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u5e73\\u5747\\u503c\",\n",
       "                        \"type\": \"average\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"xAxis\": \"90%\",\n",
       "                        \"yAxis\": \"max\",\n",
       "                        \"symbol\": \"none\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u9ad8\\u70b9\",\n",
       "                        \"type\": \"max\",\n",
       "                        \"symbol\": \"circle\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 0\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u6700\\u9ad8\\u6c14\\u6e29\",\n",
       "                \"\\u6700\\u4f4e\\u6c14\\u6e29\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u6700\\u9ad8\\u6c14\\u6e29\": true,\n",
       "                \"\\u6700\\u4f4e\\u6c14\\u6e29\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"axis\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"type\": \"category\",\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"boundaryGap\": false,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u5468\\u4e00\",\n",
       "                \"\\u5468\\u4e8c\",\n",
       "                \"\\u5468\\u4e09\",\n",
       "                \"\\u5468\\u56db\",\n",
       "                \"\\u5468\\u4e94\",\n",
       "                \"\\u5468\\u516d\",\n",
       "                \"\\u5468\\u65e5\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u672a\\u6765\\u4e00\\u5468\\u6c14\\u6e29\\u53d8\\u5316\",\n",
       "            \"subtext\": \"\\u7eaf\\u5c5e\\u865a\\u6784\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"toolbox\": {\n",
       "        \"show\": true,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"itemSize\": 15,\n",
       "        \"itemGap\": 10,\n",
       "        \"left\": \"80%\",\n",
       "        \"feature\": {\n",
       "            \"saveAsImage\": {\n",
       "                \"type\": \"png\",\n",
       "                \"backgroundColor\": \"auto\",\n",
       "                \"connectedBackgroundColor\": \"#fff\",\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u4fdd\\u5b58\\u4e3a\\u56fe\\u7247\",\n",
       "                \"pixelRatio\": 1\n",
       "            },\n",
       "            \"restore\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u8fd8\\u539f\"\n",
       "            },\n",
       "            \"dataView\": {\n",
       "                \"show\": true,\n",
       "                \"title\": \"\\u6570\\u636e\\u89c6\\u56fe\",\n",
       "                \"readOnly\": false,\n",
       "                \"lang\": [\n",
       "                    \"\\u6570\\u636e\\u89c6\\u56fe\",\n",
       "                    \"\\u5173\\u95ed\",\n",
       "                    \"\\u5237\\u65b0\"\n",
       "                ],\n",
       "                \"backgroundColor\": \"#fff\",\n",
       "                \"textareaColor\": \"#fff\",\n",
       "                \"textareaBorderColor\": \"#333\",\n",
       "                \"textColor\": \"#000\",\n",
       "                \"buttonColor\": \"#c23531\",\n",
       "                \"buttonTextColor\": \"#fff\"\n",
       "            },\n",
       "            \"dataZoom\": {\n",
       "                \"show\": true,\n",
       "                \"title\": {\n",
       "                    \"zoom\": \"\\u533a\\u57df\\u7f29\\u653e\",\n",
       "                    \"back\": \"\\u533a\\u57df\\u7f29\\u653e\\u8fd8\\u539f\"\n",
       "                },\n",
       "                \"icon\": {},\n",
       "                \"xAxisIndex\": false,\n",
       "                \"yAxisIndex\": false,\n",
       "                \"filterMode\": \"filter\"\n",
       "            },\n",
       "            \"magicType\": {\n",
       "                \"show\": true,\n",
       "                \"type\": [\n",
       "                    \"line\",\n",
       "                    \"bar\",\n",
       "                    \"stack\",\n",
       "                    \"tiled\"\n",
       "                ],\n",
       "                \"title\": {\n",
       "                    \"line\": \"\\u5207\\u6362\\u4e3a\\u6298\\u7ebf\\u56fe\",\n",
       "                    \"bar\": \"\\u5207\\u6362\\u4e3a\\u67f1\\u72b6\\u56fe\",\n",
       "                    \"stack\": \"\\u5207\\u6362\\u4e3a\\u5806\\u53e0\",\n",
       "                    \"tiled\": \"\\u5207\\u6362\\u4e3a\\u5e73\\u94fa\"\n",
       "                },\n",
       "                \"icon\": {}\n",
       "            },\n",
       "            \"brush\": {\n",
       "                \"icon\": {},\n",
       "                \"title\": {\n",
       "                    \"rect\": \"\\u77e9\\u5f62\\u9009\\u62e9\",\n",
       "                    \"polygon\": \"\\u5708\\u9009\",\n",
       "                    \"lineX\": \"\\u6a2a\\u5411\\u9009\\u62e9\",\n",
       "                    \"lineY\": \"\\u7eb5\\u5411\\u9009\\u62e9\",\n",
       "                    \"keep\": \"\\u4fdd\\u6301\\u9009\\u62e9\",\n",
       "                    \"clear\": \"\\u6e05\\u9664\\u9009\\u62e9\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "                chart_8e737ea6ead74a51884db72e881a9c05.setOption(option_8e737ea6ead74a51884db72e881a9c05);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x7869488>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pyecharts.options as opts\n",
    "from pyecharts.charts import Line\n",
    "\n",
    "\"\"\"\n",
    "Gallery 使用 pyecharts 1.1.0\n",
    "参考地址: https://www.echartsjs.com/examples/editor.html?c=line-marker\n",
    "\n",
    "目前无法实现的功能:\n",
    "\n",
    "1、最低气温的最高值暂时无法和 Echarts 的示例完全复刻\n",
    "\"\"\"\n",
    "\n",
    "week_name_list = [\"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\", \"周日\"]\n",
    "high_temperature = [11, 11, 15, 13, 12, 13, 10]\n",
    "low_temperature = [1, -2, 2, 5, 3, 2, 0]\n",
    "\n",
    "\n",
    "c=(\n",
    "    Line(init_opts=opts.InitOpts(width=\"1000px\", height=\"500px\"))\n",
    "    .add_xaxis(xaxis_data=week_name_list)\n",
    "    .add_yaxis(\n",
    "        series_name=\"最高气温\",\n",
    "        y_axis=high_temperature,\n",
    "        markpoint_opts=opts.MarkPointOpts(\n",
    "            data=[\n",
    "                opts.MarkPointItem(type_=\"max\", name=\"最大值\"),\n",
    "                opts.MarkPointItem(type_=\"min\", name=\"最小值\"),\n",
    "            ]\n",
    "        ),\n",
    "        markline_opts=opts.MarkLineOpts(\n",
    "            data=[opts.MarkLineItem(type_=\"average\", name=\"平均值\")]\n",
    "        ),\n",
    "    )\n",
    "    .add_yaxis(\n",
    "        series_name=\"最低气温\",\n",
    "        y_axis=low_temperature,\n",
    "        markpoint_opts=opts.MarkPointOpts(\n",
    "            data=[opts.MarkPointItem(value=-2, name=\"周最低\", x=1, y=-1.5)]\n",
    "        ),\n",
    "        markline_opts=opts.MarkLineOpts(\n",
    "            data=[\n",
    "                opts.MarkLineItem(type_=\"average\", name=\"平均值\"),\n",
    "                opts.MarkLineItem(symbol=\"none\", x=\"90%\", y=\"max\"),\n",
    "                opts.MarkLineItem(symbol=\"circle\", type_=\"max\", name=\"最高点\"),\n",
    "            ]\n",
    "        ),\n",
    "    )\n",
    "    .set_global_opts(\n",
    "        title_opts=opts.TitleOpts(title=\"未来一周气温变化\", subtitle=\"纯属虚构\"),\n",
    "        tooltip_opts=opts.TooltipOpts(trigger=\"axis\"),\n",
    "        toolbox_opts=opts.ToolboxOpts(is_show=True),\n",
    "        xaxis_opts=opts.AxisOpts(type_=\"category\", boundary_gap=False),\n",
    "    )\n",
    "    #.render(\"temperature_change_line_chart.html\")\n",
    ")\n",
    "\n",
    "\n",
    "c.render(\"temperature_change_line_chart.html\")\n",
    "c.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 航线图 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'china':'https://assets.pyecharts.org/assets/maps/china'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"b03ff064887442feadc8f5b353360a7c\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'china'], function(echarts) {\n",
       "                var chart_b03ff064887442feadc8f5b353360a7c = echarts.init(\n",
       "                    document.getElementById('b03ff064887442feadc8f5b353360a7c'), 'white', {renderer: 'canvas'});\n",
       "                var option_b03ff064887442feadc8f5b353360a7c = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"effectScatter\",\n",
       "            \"coordinateSystem\": \"geo\",\n",
       "            \"showEffectOn\": \"render\",\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            },\n",
       "            \"symbolSize\": 12,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5317\\u4eac\",\n",
       "                    \"value\": [\n",
       "                        116.407526,\n",
       "                        39.90403,\n",
       "                        10\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77\",\n",
       "                    \"value\": [\n",
       "                        121.473701,\n",
       "                        31.230416,\n",
       "                        20\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5e7f\\u5dde\",\n",
       "                    \"value\": [\n",
       "                        113.23,\n",
       "                        23.16,\n",
       "                        30\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6210\\u90fd\",\n",
       "                    \"value\": [\n",
       "                        104.06,\n",
       "                        30.67,\n",
       "                        40\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u54c8\\u5c14\\u6ee8\",\n",
       "                    \"value\": [\n",
       "                        126.63,\n",
       "                        45.75,\n",
       "                        50\n",
       "                    ]\n",
       "                }\n",
       "            ],\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"lines\",\n",
       "            \"name\": \"geo-lines\",\n",
       "            \"coordinateSystem\": \"geo\",\n",
       "            \"zlevel\": 3,\n",
       "            \"progressive\": 400,\n",
       "            \"progressiveThreshold\": 3000,\n",
       "            \"effect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4,\n",
       "                \"color\": \"yellow\",\n",
       "                \"symbol\": \"arrow\",\n",
       "                \"symbolSize\": 5\n",
       "            },\n",
       "            \"symbol\": [\n",
       "                \"none\",\n",
       "                \"arrow\"\n",
       "            ],\n",
       "            \"polyline\": false,\n",
       "            \"large\": true,\n",
       "            \"largeThreshold\": 2000,\n",
       "            \"symbolSize\": 12,\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77->\\u5e7f\\u5dde\",\n",
       "                    \"coords\": [\n",
       "                        [\n",
       "                            121.473701,\n",
       "                            31.230416\n",
       "                        ],\n",
       "                        [\n",
       "                            113.23,\n",
       "                            23.16\n",
       "                        ]\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77->\\u65b0\\u7586\",\n",
       "                    \"coords\": [\n",
       "                        [\n",
       "                            121.473701,\n",
       "                            31.230416\n",
       "                        ],\n",
       "                        [\n",
       "                            87.627704,\n",
       "                            43.793026\n",
       "                        ]\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77->\\u54c8\\u5c14\\u6ee8\",\n",
       "                    \"coords\": [\n",
       "                        [\n",
       "                            121.473701,\n",
       "                            31.230416\n",
       "                        ],\n",
       "                        [\n",
       "                            126.63,\n",
       "                            45.75\n",
       "                        ]\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6210\\u90fd->\\u5317\\u4eac\",\n",
       "                    \"coords\": [\n",
       "                        [\n",
       "                            104.06,\n",
       "                            30.67\n",
       "                        ],\n",
       "                        [\n",
       "                            116.407526,\n",
       "                            39.90403\n",
       "                        ]\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u54c8\\u5c14\\u6ee8->\\u5e7f\\u5dde\",\n",
       "                    \"coords\": [\n",
       "                        [\n",
       "                            126.63,\n",
       "                            45.75\n",
       "                        ],\n",
       "                        [\n",
       "                            113.23,\n",
       "                            23.16\n",
       "                        ]\n",
       "                    ]\n",
       "                }\n",
       "            ],\n",
       "            \"lineStyle\": {\n",
       "                \"show\": true,\n",
       "                \"width\": 1,\n",
       "                \"opacity\": 1,\n",
       "                \"curveness\": 0.2,\n",
       "                \"type\": \"solid\"\n",
       "            },\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\",\n",
       "                \"geo-lines\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\": true,\n",
       "                \"geo-lines\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"formatter\": function (params) {        return params.name + ' : ' + params.value[2];    },\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Geo-Lines\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"visualMap\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"continuous\",\n",
       "        \"min\": 0,\n",
       "        \"max\": 100,\n",
       "        \"inRange\": {\n",
       "            \"color\": [\n",
       "                \"#50a3ba\",\n",
       "                \"#eac763\",\n",
       "                \"#d94e5d\"\n",
       "            ]\n",
       "        },\n",
       "        \"calculable\": true,\n",
       "        \"inverse\": false,\n",
       "        \"splitNumber\": 5,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"showLabel\": true,\n",
       "        \"itemWidth\": 20,\n",
       "        \"itemHeight\": 140,\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"geo\": {\n",
       "        \"map\": \"china\",\n",
       "        \"roam\": true,\n",
       "        \"emphasis\": {}\n",
       "    }\n",
       "};\n",
       "                chart_b03ff064887442feadc8f5b353360a7c.setOption(option_b03ff064887442feadc8f5b353360a7c);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x6566f48>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 导入Geo包，注意1.x版本的导入跟0.x版本的导入差别\n",
    "from pyecharts.charts import Geo\n",
    "# 导入配置项\n",
    "from pyecharts import options as opts\n",
    "# ChartType：图标类型，SymbolType：标记点类型\n",
    "from pyecharts .globals import ChartType, SymbolType\n",
    "\n",
    "geo = Geo()\n",
    "\n",
    "# 地图类型，世界地图可换为world\n",
    "geo.add_schema(maptype=\"china\")\n",
    "# 添加数据点\n",
    "geo.add(\"\",[(\"北京\",10),(\"上海\",20),(\"广州\",30),(\"成都\",40),(\"哈尔滨\",50)],type_=ChartType.EFFECT_SCATTER)\n",
    "# 添加流向，type_设置为LINES，涟漪配置为箭头，提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', \n",
    "#'diamond', 'pin', 'arrow', 'none'\n",
    "geo.add(\"geo-lines\",\n",
    "[(\"上海\",\"广州\"),\n",
    "(\"上海\",\"新疆\"),\n",
    "(\"上海\",\"哈尔滨\"),\n",
    "(\"成都\",\"北京\"),\n",
    "(\"哈尔滨\",\"广州\")],\n",
    "type_=ChartType.LINES,\n",
    "effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW,symbol_size=5,color=\"yellow\"),\n",
    "linestyle_opts=opts.LineStyleOpts(curve=0.2),\n",
    "    is_large=True)\n",
    "# 不显示标签\n",
    "geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
    "# 设置图标标题，visualmap_opts=opts.VisualMapOpts()为左下角的视觉映射配置项\n",
    "geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(),title_opts=opts.TitleOpts(title=\"Geo-Lines\"))\n",
    "# 直接在notebook里显示图表\n",
    "geo.render_notebook()\n",
    "# 生成html文件，可传入位置参数\n",
    "geo.render(\"mychart.html\")\n",
    "geo.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 全局配置\n",
    "## 实例1\n",
    "\n",
    "参考：https://pyecharts.org/#/zh-cn/global_options\n",
    "https://www.cnblogs.com/bltstop/p/13608541.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"c6d5d8a20b124b08b8f24b107eaacbb0\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_c6d5d8a20b124b08b8f24b107eaacbb0 = echarts.init(\n",
       "                    document.getElementById('c6d5d8a20b124b08b8f24b107eaacbb0'), 'white', {renderer: 'canvas'});\n",
       "                var option_c6d5d8a20b124b08b8f24b107eaacbb0 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                140,\n",
       "                136,\n",
       "                144,\n",
       "                120,\n",
       "                119,\n",
       "                150\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                130,\n",
       "                146,\n",
       "                24,\n",
       "                110,\n",
       "                79,\n",
       "                110\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"left\": \"right\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"nameRotate\": 90,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u54c8\\u58eb\\u5947\",\n",
       "                \"\\u6cf0\\u8fea\",\n",
       "                \"\\u91d1\\u6bdb\",\n",
       "                \"\\u67ef\\u57fa\",\n",
       "                \"\\u5409\\u5a03\\u5a03\",\n",
       "                \"\\u7267\\u7f8a\\u72ac\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5ba0\\u7269\\u72d7\\u7684\\u9500\\u552e\\u4ef7\\u683c\",\n",
       "            \"link\": \"https://www.baidu.com\",\n",
       "            \"subtext\": \"\\u4e24\\u4e2a\\u5546\\u5bb6\\u7684\\u5bf9\\u6bd4\",\n",
       "            \"left\": \"center\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"dataZoom\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"slider\",\n",
       "        \"realtime\": true,\n",
       "        \"start\": 20,\n",
       "        \"end\": 80,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"zoomLock\": false,\n",
       "        \"filterMode\": \"filter\"\n",
       "    }\n",
       "};\n",
       "                chart_c6d5d8a20b124b08b8f24b107eaacbb0.setOption(option_c6d5d8a20b124b08b8f24b107eaacbb0);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x66a60c8>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "x = [\"哈士奇\", \"泰迪\", \"金毛\", \"柯基\", \"吉娃娃\", \"牧羊犬\"]\n",
    "y1 = [140, 136, 144, 120, 119, 150]\n",
    "y2 = [130, 146, 24, 110, 79, 110]\n",
    "\n",
    "bar = Bar()\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"商家A\", y1)\n",
    "bar.add_yaxis(\"商家B\", y2)\n",
    "#bar.reversal_axis()  #横向\n",
    "#全局配置：标题,坐标轴,图例\n",
    "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"宠物狗的销售价格\", subtitle=\"两个商家的对比\", \n",
    "                                              title_link = \"https://www.baidu.com\",\n",
    "                                             pos_left = 'center'), \n",
    "                    xaxis_opts=opts.AxisOpts( name_rotate = 90),\n",
    "                   datazoom_opts = opts.DataZoomOpts(is_show = True),\n",
    "                   legend_opts = opts.LegendOpts(pos_left = \"right\"))\n",
    "\n",
    "\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 系列配置项\n",
    "### set_series_opts 在柱状图最大值和最小值上方标出数值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"0a05c0589ca547d9bceb3f52074bb811\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_0a05c0589ca547d9bceb3f52074bb811 = echarts.init(\n",
       "                    document.getElementById('0a05c0589ca547d9bceb3f52074bb811'), 'white', {renderer: 'canvas'});\n",
       "                var option_0a05c0589ca547d9bceb3f52074bb811 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                140,\n",
       "                136,\n",
       "                144,\n",
       "                120,\n",
       "                119,\n",
       "                150\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                130,\n",
       "                146,\n",
       "                24,\n",
       "                110,\n",
       "                79,\n",
       "                110\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"left\": \"right\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"nameRotate\": 90,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u54c8\\u58eb\\u5947\",\n",
       "                \"\\u6cf0\\u8fea\",\n",
       "                \"\\u91d1\\u6bdb\",\n",
       "                \"\\u67ef\\u57fa\",\n",
       "                \"\\u5409\\u5a03\\u5a03\",\n",
       "                \"\\u7267\\u7f8a\\u72ac\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5ba0\\u7269\\u72d7\\u7684\\u9500\\u552e\\u4ef7\\u683c\",\n",
       "            \"link\": \"https://www.baidu.com\",\n",
       "            \"subtext\": \"\\u4e24\\u4e2a\\u5546\\u5bb6\\u7684\\u5bf9\\u6bd4\",\n",
       "            \"left\": \"center\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"dataZoom\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"slider\",\n",
       "        \"realtime\": true,\n",
       "        \"start\": 20,\n",
       "        \"end\": 80,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"zoomLock\": false,\n",
       "        \"filterMode\": \"filter\"\n",
       "    }\n",
       "};\n",
       "                chart_0a05c0589ca547d9bceb3f52074bb811.setOption(option_0a05c0589ca547d9bceb3f52074bb811);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x6701488>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "x = [\"哈士奇\", \"泰迪\", \"金毛\", \"柯基\", \"吉娃娃\", \"牧羊犬\"]\n",
    "y1 = [140, 136, 144, 120, 119, 150]\n",
    "y2 = [130, 146, 24, 110, 79, 110]\n",
    "\n",
    "bar = Bar()\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"商家A\", y1)\n",
    "bar.add_yaxis(\"商家B\", y2)\n",
    "\n",
    "#全局配置：标题,坐标轴,图例\n",
    "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"宠物狗的销售价格\", subtitle=\"两个商家的对比\", \n",
    "                                              title_link = \"https://www.baidu.com\",\n",
    "                                             pos_left = 'center'), \n",
    "                    xaxis_opts=opts.AxisOpts( name_rotate = 90),\n",
    "                   datazoom_opts = opts.DataZoomOpts(is_show = True),\n",
    "                   legend_opts = opts.LegendOpts(pos_left = \"right\"))\n",
    "#系列配置项;\n",
    "bar.set_series_opts(label_opts = opts.LabelOpts(is_show = False),\n",
    "                   markpoint_opts = opts.MarkPointOpts(\n",
    "                       data = [\n",
    "                           opts.MarkPointItem(type_ = \"max\", name = \"最大值\"),\n",
    "                           opts.MarkPointItem(type_ = \"min\", name = \"最小值\"),  #\n",
    "                   ]))\n",
    "\n",
    "bar.render(\"bar_colorset.html\")\n",
    "bar.render_notebook()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 改变柱状图的颜色  \n",
    "itemstyle_opts = opts.ItemStyleOpts(color = \"blue\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"a329a3b126bc4d1695e660cc1cf4e374\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts'], function(echarts) {\n",
       "                var chart_a329a3b126bc4d1695e660cc1cf4e374 = echarts.init(\n",
       "                    document.getElementById('a329a3b126bc4d1695e660cc1cf4e374'), 'white', {renderer: 'canvas'});\n",
       "                var option_a329a3b126bc4d1695e660cc1cf4e374 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                140,\n",
       "                136,\n",
       "                144,\n",
       "                120,\n",
       "                119,\n",
       "                150\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"itemStyle\": {\n",
       "                \"color\": \"blue\"\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                130,\n",
       "                146,\n",
       "                24,\n",
       "                110,\n",
       "                79,\n",
       "                110\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"itemStyle\": {},\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"left\": \"right\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"nameRotate\": 90,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u54c8\\u58eb\\u5947\",\n",
       "                \"\\u6cf0\\u8fea\",\n",
       "                \"\\u91d1\\u6bdb\",\n",
       "                \"\\u67ef\\u57fa\",\n",
       "                \"\\u5409\\u5a03\\u5a03\",\n",
       "                \"\\u7267\\u7f8a\\u72ac\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5ba0\\u7269\\u72d7\\u7684\\u9500\\u552e\\u4ef7\\u683c\",\n",
       "            \"link\": \"https://www.baidu.com\",\n",
       "            \"subtext\": \"\\u4e24\\u4e2a\\u5546\\u5bb6\\u7684\\u5bf9\\u6bd4\",\n",
       "            \"left\": \"center\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"dataZoom\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"slider\",\n",
       "        \"realtime\": true,\n",
       "        \"start\": 20,\n",
       "        \"end\": 80,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"zoomLock\": false,\n",
       "        \"filterMode\": \"filter\"\n",
       "    }\n",
       "};\n",
       "                chart_a329a3b126bc4d1695e660cc1cf4e374.setOption(option_a329a3b126bc4d1695e660cc1cf4e374);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x66c2e08>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts.faker import Faker\n",
    "\n",
    "x = [\"哈士奇\", \"泰迪\", \"金毛\", \"柯基\", \"吉娃娃\", \"牧羊犬\"]\n",
    "y1 = [140, 136, 144, 120, 119, 150]\n",
    "y2 = [130, 146, 24, 110, 79, 110]\n",
    "\n",
    "bar = Bar()\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"商家A\", y1,itemstyle_opts = opts.ItemStyleOpts(color = \"blue\"))\n",
    "bar.add_yaxis(\"商家B\", y2,itemstyle_opts = opts.ItemStyleOpts(color = \"\"))\n",
    "\n",
    "#全局配置：标题,坐标轴,图例\n",
    "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"宠物狗的销售价格\", subtitle=\"两个商家的对比\", \n",
    "                                              title_link = \"https://www.baidu.com\",\n",
    "                                             pos_left = 'center'), \n",
    "                    xaxis_opts=opts.AxisOpts( name_rotate = 90),\n",
    "                   datazoom_opts = opts.DataZoomOpts(is_show = True),\n",
    "                   legend_opts = opts.LegendOpts(pos_left = \"right\") )\n",
    "#系列配置项;\n",
    "bar.set_series_opts(label_opts = opts.LabelOpts(is_show = False),\n",
    "                   markpoint_opts = opts.MarkPointOpts(\n",
    "                       data = [\n",
    "                           opts.MarkPointItem(type_ = \"max\", name = \"最大值\"),\n",
    "                           opts.MarkPointItem(type_ = \"min\", name = \"最小值\"),  #\n",
    "                   ]))\n",
    "\n",
    "bar.render(\"bar_colorset.html\")\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 主题（全局，InitOpts）\n",
    "pyecharts内置提供了10+种不同的风格，另外也提供了便捷的定制主题的方法\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'walden':'https://assets.pyecharts.org/assets/themes/walden'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"760cdc7249384633bc5f59a259257eee\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'walden'], function(echarts) {\n",
       "                var chart_760cdc7249384633bc5f59a259257eee = echarts.init(\n",
       "                    document.getElementById('760cdc7249384633bc5f59a259257eee'), 'walden', {renderer: 'canvas'});\n",
       "                var option_760cdc7249384633bc5f59a259257eee = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                140,\n",
       "                136,\n",
       "                144,\n",
       "                120,\n",
       "                119,\n",
       "                150\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        },\n",
       "        {\n",
       "            \"type\": \"bar\",\n",
       "            \"name\": \"\\u5546\\u5bb6B\",\n",
       "            \"legendHoverLink\": true,\n",
       "            \"data\": [\n",
       "                130,\n",
       "                146,\n",
       "                24,\n",
       "                110,\n",
       "                79,\n",
       "                110\n",
       "            ],\n",
       "            \"showBackground\": false,\n",
       "            \"barMinHeight\": 0,\n",
       "            \"barCategoryGap\": \"20%\",\n",
       "            \"barGap\": \"30%\",\n",
       "            \"large\": false,\n",
       "            \"largeThreshold\": 400,\n",
       "            \"seriesLayoutBy\": \"column\",\n",
       "            \"datasetIndex\": 0,\n",
       "            \"clip\": true,\n",
       "            \"zlevel\": 0,\n",
       "            \"z\": 2,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"markPoint\": {\n",
       "                \"label\": {\n",
       "                    \"show\": true,\n",
       "                    \"position\": \"inside\",\n",
       "                    \"color\": \"#fff\",\n",
       "                    \"margin\": 8\n",
       "                },\n",
       "                \"data\": [\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5927\\u503c\",\n",
       "                        \"type\": \"max\"\n",
       "                    },\n",
       "                    {\n",
       "                        \"name\": \"\\u6700\\u5c0f\\u503c\",\n",
       "                        \"type\": \"min\"\n",
       "                    }\n",
       "                ]\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\",\n",
       "                \"\\u5546\\u5bb6B\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true,\n",
       "                \"\\u5546\\u5bb6B\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"left\": \"right\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"xAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"nameRotate\": 90,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            },\n",
       "            \"data\": [\n",
       "                \"\\u54c8\\u58eb\\u5947\",\n",
       "                \"\\u6cf0\\u8fea\",\n",
       "                \"\\u91d1\\u6bdb\",\n",
       "                \"\\u67ef\\u57fa\",\n",
       "                \"\\u5409\\u5a03\\u5a03\",\n",
       "                \"\\u7267\\u7f8a\\u72ac\"\n",
       "            ]\n",
       "        }\n",
       "    ],\n",
       "    \"yAxis\": [\n",
       "        {\n",
       "            \"show\": true,\n",
       "            \"scale\": false,\n",
       "            \"nameLocation\": \"end\",\n",
       "            \"nameGap\": 15,\n",
       "            \"gridIndex\": 0,\n",
       "            \"inverse\": false,\n",
       "            \"offset\": 0,\n",
       "            \"splitNumber\": 5,\n",
       "            \"minInterval\": 0,\n",
       "            \"splitLine\": {\n",
       "                \"show\": false,\n",
       "                \"lineStyle\": {\n",
       "                    \"show\": true,\n",
       "                    \"width\": 1,\n",
       "                    \"opacity\": 1,\n",
       "                    \"curveness\": 0,\n",
       "                    \"type\": \"solid\"\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"\\u5ba0\\u7269\\u72d7\\u7684\\u9500\\u552e\\u4ef7\\u683c\",\n",
       "            \"link\": \"https://www.baidu.com\",\n",
       "            \"subtext\": \"\\u4e24\\u4e2a\\u5546\\u5bb6\\u7684\\u5bf9\\u6bd4\",\n",
       "            \"left\": \"center\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"dataZoom\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"slider\",\n",
       "        \"realtime\": true,\n",
       "        \"start\": 20,\n",
       "        \"end\": 80,\n",
       "        \"orient\": \"horizontal\",\n",
       "        \"zoomLock\": false,\n",
       "        \"filterMode\": \"filter\"\n",
       "    }\n",
       "};\n",
       "                chart_760cdc7249384633bc5f59a259257eee.setOption(option_760cdc7249384633bc5f59a259257eee);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x678a108>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Bar\n",
    "from pyecharts.globals import ThemeType\n",
    "\n",
    "x = [\"哈士奇\", \"泰迪\", \"金毛\", \"柯基\", \"吉娃娃\", \"牧羊犬\"]\n",
    "y1 = [140, 136, 144, 120, 119, 150]\n",
    "y2 = [130, 146, 24, 110, 79, 110]\n",
    "\n",
    "#bar = Bar(init_opts = opts.InitOpts(theme=ThemeType.DARK))\n",
    "bar = Bar(init_opts = opts.InitOpts(theme=ThemeType.WALDEN))\n",
    "# bar = Bar(init_opts = opts.InitOpts(theme=ThemeType.MACARONS))\n",
    "bar.add_xaxis(x)\n",
    "bar.add_yaxis(\"商家A\", y1)\n",
    "bar.add_yaxis(\"商家B\", y2)\n",
    "\n",
    "#全局配置：标题,坐标轴,图例\n",
    "bar.set_global_opts(title_opts=opts.TitleOpts(title=\"宠物狗的销售价格\", subtitle=\"两个商家的对比\", \n",
    "                                              title_link = \"https://www.baidu.com\",\n",
    "                                             pos_left = 'center'), \n",
    "                    xaxis_opts=opts.AxisOpts( name_rotate = 90),\n",
    "                   datazoom_opts = opts.DataZoomOpts(is_show = True),\n",
    "                   legend_opts = opts.LegendOpts(pos_left = \"right\"))\n",
    "#系列配置项;\n",
    "bar.set_series_opts(label_opts = opts.LabelOpts(is_show = False),\n",
    "                   markpoint_opts = opts.MarkPointOpts(\n",
    "                       data = [\n",
    "                           opts.MarkPointItem(type_ = \"max\", name = \"最大值\"),\n",
    "                           opts.MarkPointItem(type_ = \"min\", name = \"最小值\"),  #\n",
    "                   ]))\n",
    "\n",
    "bar.render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# Data for plotting\n",
    "t = np.arange(0.0, 2.0, 0.01)\n",
    "s = 1 + np.sin(2 * np.pi * t)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(t, s)\n",
    "\n",
    "ax.set(xlabel='time (s)', ylabel='voltage (mV)',\n",
    "       title='About as simple as it gets, folks')\n",
    "ax.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "np.random.seed(19680801)\n",
    "\n",
    "# example data\n",
    "mu = 100  # mean of distribution\n",
    "sigma = 15  # standard deviation of distribution\n",
    "x = mu + sigma * np.random.randn(437)\n",
    "\n",
    "num_bins = 50\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "# the histogram of the data\n",
    "n, bins, patches = ax.hist(x, num_bins, density=1)\n",
    "\n",
    "# add a 'best fit' line\n",
    "y = ((1 / (np.sqrt(2 * np.pi) * sigma)) *\n",
    "     np.exp(-0.5 * (1 / sigma * (bins - mu))**2))\n",
    "ax.plot(bins, y, '--')\n",
    "ax.set_xlabel('Smarts')\n",
    "ax.set_ylabel('Probability density')\n",
    "ax.set_title(r'Histogram: $\\mu=100$, $\\sigma=15$')\n",
    "\n",
    "# Tweak spacing to prevent clipping of ylabel\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'heatmap' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-9-883d2989f256>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     18\u001b[0m \u001b[0mfig\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0max\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msubplots\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     19\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m im, cbar = heatmap(coef, leadtime, param, ax=ax,\n\u001b[0m\u001b[0;32m     21\u001b[0m                    cmap=\"PiYG\", cbarlabel=\"Correlation Coefficient\")\n\u001b[0;32m     22\u001b[0m \u001b[0mtexts\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mannotate_heatmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mim\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalfmt\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"{x:.2f}\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'heatmap' is not defined"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "# sphinx_gallery_thumbnail_number = 2\n",
    "\n",
    "leadtime = [\"lead 1 mon\", \"lead 2 mon\", \"lead 3 mon\", \"lead 4 mon\",\n",
    "              \"lead 5 mon\", \"lead 6 mon\"]\n",
    "param = [\"Temperature\", \"Wind\", \"Precipitation\",\n",
    "           \"SLP\", \"Humidity\", \"Heat flux\"]\n",
    "\n",
    "coef = np.array([[0.95, 0.9, 0.85, 0.8, 0.82, 0.7],\n",
    "                    [0.93, 0.86, 0.82, 0.78, 0.8, 0.65],\n",
    "                    [0.88, 0.82, 0.8, 0.72, 0.75, 0.62],\n",
    "                    [0.85, 0.78, 0.75, 0.68, 0.7, 0.56],\n",
    "                    [0.8, 0.72, 0.7, 0.65, 0.68, 0.5],\n",
    "                    [0.78, 0.68, 0.65, 0.6, 0.6, 0.45],])\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "im, cbar = heatmap(coef, leadtime, param, ax=ax,\n",
    "                   cmap=\"PiYG\", cbarlabel=\"Correlation Coefficient\")\n",
    "texts = annotate_heatmap(im, valfmt=\"{x:.2f}\")\n",
    "\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.tri as tri\n",
    "import numpy as np\n",
    "\n",
    "np.random.seed(19680801)\n",
    "npts = 200\n",
    "ngridx = 100\n",
    "ngridy = 200\n",
    "x = np.random.uniform(-2, 2, npts)\n",
    "y = np.random.uniform(-2, 2, npts)\n",
    "z = x * np.exp(-x**2 - y**2)\n",
    "\n",
    "fig, ax1 = plt.subplots()\n",
    "# -----------------------\n",
    "# Interpolation on a grid\n",
    "# -----------------------\n",
    "# A contour plot of irregularly spaced data coordinates\n",
    "# via interpolation on a grid.\n",
    "# Create grid values first.\n",
    "xi = np.linspace(-2.1, 2.1, ngridx)\n",
    "yi = np.linspace(-2.1, 2.1, ngridy)\n",
    "\n",
    "# Linearly interpolate the data (x, y) \n",
    "# on a grid defined by (xi, yi).\n",
    "triang = tri.Triangulation(x, y)\n",
    "interpolator = tri.LinearTriInterpolator(triang, z)\n",
    "Xi, Yi = np.meshgrid(xi, yi)\n",
    "zi = interpolator(Xi, Yi)\n",
    "\n",
    "# Note that scipy.interpolate provides means to \n",
    "#interpolate data on a grid as well. The following \n",
    "# would be an alternative to the four lines above:\n",
    "#from scipy.interpolate import griddata\n",
    "ax1.contour(xi, yi, zi, levels=14, linewidths=0.5, colors='k')\n",
    "cntr1 = ax1.contourf(xi, yi, zi, levels=14, cmap=\"RdBu_r\")\n",
    "fig.colorbar(cntr1, ax=ax1)\n",
    "ax1.plot(x, y, 'ko', ms=3)\n",
    "ax1.set(xlim=(-2, 2), ylim=(-2, 2))\n",
    "ax1.set_title('grid and contour (%d points, %d grid points)'%\n",
    "              (npts, ngridx * ngridy))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAaeUlEQVR4nO3de3RV5bnv8e+ThBAuotwUBBQpGBGoSiPVrW7pUSxsj6BVC45jt4qUtkh362kr7JEO6QDrVqk41FMOQ7YinlFRWtwH7IbBxWq1VSmBoiLXSLVcVCKgohBIWM/+IzNrB7ISFllz3TJ/nzHWyLy8zPfJZOWXN++aay5zd0REpPUryHYBIiKSGQp8EZGIUOCLiESEAl9EJCIU+CIiEVGU7QKa0q1bN+/bt2+2yxARyStr1679xN27J9qXs4Hft29fKioqsl2GiEheMbMPmtqnKR0RkTzi7vTu3Zs//vGPJ/1vFfgiIhkwbNgwzIzNmzc32WbMmDG88MILTe53dwoKCti1axf9+/c/6RoU+CIiGfDkk08CMHDgQMyMnTt3Nmrz0UcfceONN2JmjUbw9WEP8N5779GrV6+TrkGBLyKSAUOGDMHdWbVqFQB9+vShR48e7Nu3L95m9erVfPBB3RT88OHDMTPWr1/fKOz79evXohoU+CIiabJ48WK++tWvsmzZMurvW3bVVVfh7ixcuJCPP/6Yrl27cuGFF/Lll18CcNZZZ+HubNiwAYCLLroolLAHBb6ISNpcfvnlbNu2jdGjRzN06FBee+21+L6bb74Zd2f27Nm89dZbdOzYkZEjR1JTUwPAoEGDiMVi8fbbtm1LKexBgS8ikjZdu3blZz/7GW3atGH9+vWMHDmSK664grVr18bb/OAHP8Dd+cUvfsHy5cspLi7mjjvuIBaLHTOyb8mLtMezXL09cllZmes6fBHJdwcOHKBXr14cOHAgvq1du3YMHz6chx9+mIEDB8a3uzuTJk1izpw58W0nO41jZmvdvSzRPo3wRUTS6JRTTuHee++lffv28W2HDh1i+fLlDB06lLFjx/L+++8DYGbMnj073m7Dhg0pT+M0FErgm9lTZrbHzDY0sX+4mX1mZuuDx71h9Csikg8mT55MSUnJMdtisRjV1dW88MILDBw4kO9+97t8+OGHx0zjDBo0KNQ6whrhPw2MPEGb19z9wuAxPaR+RURyXklJCffffz8dOnRotK+2tpbq6mqeeeYZzjzzTCD1q3GaEkrgu/urwL4TNhQRaWWeffZZRowYwfr165ttN378eDp16tRsmx49erBr1660hD1kdg7/UjN7y8yWmVnCv1PMbKKZVZhZRVVVVQZLExFpmWHDhvHSSy9x8cUXc91117F169aE7dq0acPDDz+ccJRfXFxMv3792LhxY3yUnw6ZCvx1wNnufgHwOPD/EzVy9yfcvczdy7p3T3h3TxGRnNK/f39uvfVWzIxly5ZxwQUXcOutt7Jjx45GbceOHcsZZ5xxzLb6sH/99dfp3LlzWmvNSOC7++fu/kWwvBRoY2bdMtG3iEi63X///RQWFnL06FGqq6tZuHAhpaWlTJo0iT179sTbFRQU8Oijj8ZH+ZkMe8hQ4JtZDzOzYHlY0O/eTPQtIpJuvXv35s4776Rt27YA1NTUcOjQIZ588kn69u3LlClT+PTTTwG49tprOeecczCzjIY9hPTGKzNbAAwHugEfA9OANgDuPsfMJgM/AGqBQ8D/dvfXmzum3nglIvnkk08+4eyzz+bgwYON9pWUlFBUVMTUqVP58Y9/TMeOHQHYt29f6GHf3Buv9E5bEZGQlJeX88gjj3Do0KGE+9u3bx//hZCuSy/1TlsRkQyYMmUKhYWFTe6vra2lQ4cO/P3vf0/bpZfNUeCLiISkU6dOlJeXH3MbhXr1L9Du2LGDPn36ZKE6Bb6ISKh+9KMfxV+8rZfpq3GaosAXEQlRu3btuO+++7J26WVzFPgiIiGbMGECHTt2pKioKGfCHhT4IiKhKy4u5vHHH+fCCy/MmbAHXZYpItKq6LJMERFR4IuIRIUCX0QkIhT4IiIRocAXEYkIBb6ISEQo8EVEIkKBLyISEQp8EZGIUOCLiESEAl9EJCIU+CIiEaHAFxGJCAW+iEhEKPBFRCJCgS8iEhEKfBGRiFDgi4hEhAJfRCQiFPgiIhGhwBcRiQgFvohIRIQS+Gb2lJntMbMNTew3M3vMzCrN7G0zGxpGvyIikrywRvhPAyOb2T8KGBA8JgL/N6R+RUQkSaEEvru/CuxrpskY4Bmv8yZwmpn1DKNvERFJTqbm8HsBOxqs7wy2HcPMJppZhZlVVFVVZag0EZFoyFTgW4Jt3miD+xPuXubuZd27d89AWSIi0ZGpwN8J9Gmw3hvYnaG+RUSEzAX+EuCfg6t1LgE+c/cPM9S3iIgARWEcxMwWAMOBbma2E5gGtAFw9znAUuCfgErgIHBHGP2KiEjyQgl8d7/lBPsduCuMvkREpGX0TlsRkYhQ4IuIRIQCX0QkIhT4IiIRocAXEYkIBb6ISEQo8EVEIkKBLyISEQp8EZGIUOCLiESEAl9EJCIU+CIiEaHAFxGJCAW+iEhEKPBFRCJCgS8iEhEKfBGRiFDgi4hEhAJfRCQiFPjSKrg7l19+OdOmTct2KSI5S4Evec/dKSgo4M9//jPTp0/HzJg9e3a2yxLJOQp8yWv1YQ+wdetWvvzySy666CLuuusuzIyFCxdmuUKR3KHAl7x1fNgPGDCA9u3bs27dOvbu3UvPnj0ZO3YsZsaqVauyXK1I9inwJS8lCvuGunTpwu7du9mxYwdmxogRIzAzKioqslGuSE5Q4EveOVHYN9S7d29isRibNm0C4OKLL8bM2Lp1a0ZqFcklCnzJKycT9g2dd955uDurV68GoLS0lHbt2hGLxdJWq0iuUeBL3mhp2Dc0bNgw3J3ly5dTXV3NF198EXaZIjmrKNsFiCQjjLBv6JprrsHdwyhNJG+EMsI3s5FmtsXMKs1saoL9t5tZlZmtDx4TwuhXoiHssBeJqpRH+GZWCPwaGAHsBNaY2RJ333hc0+fdfXKq/Um0KOxFwhPGCH8YUOnu2939CPAcMCaE40rEKexFwhVG4PcCdjRY3xlsO96NZva2mf3OzPokOpCZTTSzCjOrqKqqCqE0yVcKe5HwhRH4lmDb8a+GvQj0dfevAquA+YkO5O5PuHuZu5d17949hNIkHynsRdIjjMDfCTQcsfcGdjds4O573f1wsDoX+FoI/UorpLAXSZ8wAn8NMMDMzjGzYmAcsKRhAzPr2WB1NLAphH6llVHYi6RXylfpuHutmU0GlgOFwFPu/q6ZTQcq3H0J8C9mNhqoBfYBt6far7QuCnuR9LNcffNJWVmZ60ZX0aCwFwmPma1197JE+3RrBckqhb1I5ijwJWsU9iKZpcCXrFDYi2SeAl8yTmEvkh0KfMkohb1I9ijwJaMeeughQGEvkg26LFMyqv75ZpbojhwikqrmLsvUB6BIRinoRbJHUzoiIhGhwBcRiQgFvohIRCjwRUQiQoEvIhIRCnwRkYhQ4IuIRIQCX0QkIhT4IiIRocAXEYkIBb6ISEQo8EVEIkKBLyISEQp8EZGIUOCLiESEAl9EJCIU+CIiEaHAFxGJCAW+iEhEKPBFRCJCgS8iEhGhBL6ZjTSzLWZWaWZTE+xva2bPB/tXm1nfMPoVEZHkpRz4ZlYI/BoYBZwP3GJm5x/X7E5gv7v3Bx4BHky1XxEROTlhjPCHAZXuvt3djwDPAWOOazMGmB8s/w64yswshL5FRCRJYQR+L2BHg/WdwbaEbdy9FvgM6Hr8gcxsoplVmFlFVVVVCKWJiEi9MAI/0UjdW9AGd3/C3cvcvax79+4hlCYiIvXCCPydQJ8G672B3U21MbMi4FRgXwh9i4hIksII/DXAADM7x8yKgXHAkuPaLAFuC5ZvAv7g7o1G+CIikj5FqR7A3WvNbDKwHCgEnnL3d81sOlDh7kuAJ4H/Z2aV1I3sx6Xar4iInJyUAx/A3ZcCS4/bdm+D5Wrg5jD6EhGRltE7bUVEIkKBLyISEQp8EZGIUOCLiESEAl9EJCIU+CIiEaHAFxGJCAW+iEhEKPBFRCJCgS8iEhEKfBGRiFDgi4hEhAJfRCQiFPgiIhGhwJecpM/HEQmfAl9yzpEjRygoKCAWi2W7FJFWRYEvOae4uBiAjRs3ZrkSkdZFgS8565VXXsl2CSKtigJfcpYCXyRcCnzJWQp8kXAp8CUnlZaWsnfv3myXIdKqKPAlJw0fPjzbJYi0Ogp8yUkKfJHwKfAlJ1155ZUAuhZfJEQKfMlJPXv2BHQtvkiYFPiS03Sljkh4FPiS0xT4IuFR4EtOU+CLhCelwDezLma20sy2BV87N9HuqJmtDx5LUulTokPX4ouEK9UR/lTgJXcfALwUrCdyyN0vDB6jU+xTIkKXZoqEK9XAHwPMD5bnA9eneDyROAW+SLhSDfwz3P1DgODr6U20KzGzCjN708ya/KVgZhODdhVVVVUplib5Ttfii4Sr6EQNzGwV0CPBrvKT6Ocsd99tZv2AP5jZO+7+3vGN3P0J4AmAsrIyfeRRxDW8Fn/w4MFZrkYk/50w8N396qb2mdnHZtbT3T80s57AniaOsTv4ut3MXgEuAhoFvkgir7zyigJfJASpTuksAW4Llm8DFh/fwMw6m1nbYLkbcBmgt09K0pYtW5btEkRahVQD/wFghJltA0YE65hZmZn9e9BmIFBhZm8BLwMPuLsCX5q1aNEizAyApUuXZrkakdbhhFM6zXH3vcBVCbZXABOC5deBIan0I9Hg7syYMYNp06YBdZ9tW1NTg7tezhEJg95pK1l3+PBhbrrpJgoKCpg2bRplZWXs27ePw4cPM3HixGyXJ9JqKPAla/bs2cO5555LSUkJixYtYvz48dTU1LBmzRo6d6570/bll1+e5SpFWo+UpnREWuLtt9/mggsuiK/PmjWLu++++5g2VVVVXHnllWzatAmouxa/oEDjE5FU6CdIMuqMM86Ih/3SpUtx92PCfsOGDZgZp59+Ops2bWLmzJmA7osvEgYFvmTUo48+ysaNG3F3Ro0aFd/++9//HjNjyJAh8XV356c//Smgu2aKhEGBLxk1btw4Bg4cGF+fOXMmZsZ1110H1I3w3Z1rr732mH+3ZIlusiqSKgW+ZFxNTQ3f+c53MDPuueceBg8eTFVVFe7OoEGD4u1mzZoVvxZ/5cqV2SpXpNXQi7aSUX/5y1/4+te/DsAtt9zC008/TXFxcXx/bW0tEyZMYP78upuwlpaWsmfPHvbv35+VekVak1Yzwh8/fjyXXHJJtsuQEzjvvPOYN28esViMZ599Nh72+/btY+jQobRp04b58+dz8803U11dzebNm/n2t7+d5apFWodWEfgHDhxg3rx53HDDDdkuRU6gU6dO3H777fGpmi1bttCmTRu6du3KX//6V2bMmEEsFmPhwoW0bdsWgEsvvTSbJYu0Gq1iSqd+imDKlClZrkSStWLFCr75zW/G1xctWsS3vvWtY9ps27aNIUOGcPjw4UyXJ9Iq5f0Iv6qqik2bNvHUU09luxRJkpnFw37dunW4+zFh/9JLL2FmnHvuuRw+fJiFCxfqfjoiIcj7EX5paSkAd9xxR5YrkWStXLmSwYMH06PHsZ+rM3v2bO666674ekVFBV/72tcyXZ5Iq5XXgf/BBx+wf/9+Fi9udBt+yWFXX/3fn6lz9OhRJk+ezJw5cwDo27cvr7/+evzTrkQkPHkd+H379gVg9OjR2S1ETtpnn33GqFGjeOONN4C6/8Pnn3+ekpKSLFcm0nrl7Rz+O++8A8Brr72W5UrkZL366qucdtppvPHGG5SXlxOLxVi8eLHCXiTNLFdfDCsrK/OKioom99df1ldff21tLUVFef0HS2QcPHiQ1atX841vfCPbpYi0Oma21t3LEu3LyxH+n/70J6DuNrtQF/pt2rSJzwNLbmvfvr3CXiQL8jLwr7jiCoD4nRW/973vATBhwoSs1SQikuvyLvBffPFFAP72t78BdVM5c+fO5c4779SUjohIM/Iu8K+//noAzj77bID4G3bmzp2btZpERI7329/+FjPjgw8+yHYpcXkX+Fu2bAGgoKCAgwcP8uKLL1JeXh5/EVdEJBfceOONQN3l47kS+nkX+P3792fbtm0AdOjQAYD77rsvmyWJiDRSUFDA0aNHgdwJ/bwLfDg29AHdZ0VEclKuhX5eBj4cG/oFBQUKfRHJSbkU+nkb+KDQF5H8kCuhn9eBDwp9EckPuRD6eR/4oNAXkfyQ7dBvFYEPCn0RyQ/ZDP2UAt/Mbjazd80sZmYJb9YTtBtpZlvMrNLMpqbSZ3MU+iKSD7IV+qmO8DcA3wJebaqBmRUCvwZGAecDt5jZ+Sn22ySFvojkg2yEfkqB7+6b3H3LCZoNAyrdfbu7HwGeA8ak0u+JKPRFJB9kOvQzMYffC9jRYH1nsK0RM5toZhVmVlFVVZVSpwp9EckHBQUFDB06FEh/6J8w8M1slZltSPBIdpSe6CY3CdPX3Z9w9zJ3L+vevXuSh2+aQl9Ect3+/ftZt24djz32GJDe0D9h4Lv71e4+OMEj2U8O3wn0abDeG9jdkmJbQqEvIrms/nM9fvjDH6Z9eicTUzprgAFmdo6ZFQPjgCUZ6DdOoS8iuWjXrl3s2rWL5557DqjLp3rpCP1UL8u8wcx2ApcC/2lmy4PtZ5rZUgB3rwUmA8uBTcBCd383tbJPnkJfRHJN/ed6jB07FoB58+YB8NFHHwHhh37efoh5S1VWVjJgwAAAYrGY7qMvIlnx5Zdf0rFjR1asWMGIESMAMDNKS0vZvHkzsViMwsJCoG6e/7TTTkvquK3uQ8xToZG+iOSCdu3asWTJknjYP/jggwCsWbMGgCNHjtClSxcKCwu57LLL+PTTT1PuM3KBDwp9Ecm+goICrrvuOqDuMz2mTp3KlVdeySmnnALA448/TnV1NUePHqWysjKU0I9k4INCX0Ryx09+8hMAli9fDsDnn3/OjBkzOHjwIFA32g8j9CMb+KDQF5Hsi8ViPPLII4wbN462bdsCMHPmTGpra49pF0boRzrwoXHoi4hk0q233grAb37zGwD27t3LrFmzOHToUKO2DUP/888/P+m+lHA0/oxcEZFMOHLkCAsWLODuu++ODzinT58efwNWIkVFRVRVVdGS288o8AP9+/fXlI6IZNTIkSMBePjhhwHYvXs3c+fO5fDhw43atmvXjlNPPZVf/vKX7Nixg6985Ssn3V9RauWKiEhLHDhwgJdffpkHHngg/n6gn//8543m7ktKSigsLGTKlCncfffddOzYscV9KvBFRLJgxowZAEyZMgWA7du3s2DBAmpqagAoLi6msLCQSZMmUV5eTufOnVPuU1M6IiJZ8NBDD8XDHeCee+6hpqaGoqIiSkpKuO2229i+fTu/+tWvQgl7yOFbK5hZFRDGTSS6AZ+EcJyw5WJdqil5uVhXLtYEuVlXLtYE4dR1trsnvL98zgZ+WMysoqn7SmRTLtalmpKXi3XlYk2Qm3XlYk2Q/ro0pSMiEhEKfBGRiIhC4D+R7QKakIt1qabk5WJduVgT5GZduVgTpLmuVj+HLyIidaIwwhcRERT4IiKR0eoC38xmmNnbZrbezFaY2ZlNtLvNzLYFj9syUNdMM9sc1PYfZpbw88rM7H0zeyeoP/zPeGxZTSPNbIuZVZrZ1DTXdLOZvWtmMTNr8vK0TJ6nk6wrk+eqi5mtDJ7DK80s4btzzOxocJ7Wm9mSNNXS7PdtZm3N7Plg/2oz65uOOlpQ1+1mVtXg/EzIQE1PmdkeM9vQxH4zs8eCmt82s6Ghde7ureoBdGqw/C/AnARtugDbg6+dg+XOaa7rGqAoWH4QeLCJdu8D3TJ0rk5YE1AIvAf0A4qBt4Dz01jTQKAUeAUoa6Zdxs5TsnVl4Vw9BEwNlqc285z6Is3n5oTfNzCp/mcRGAc8n4H/s2Tquh34P5l6HgV9/iMwFNjQxP5/ApYBBlwCrA6r71Y3wnf3hjeJ7gAkelX6m8BKd9/n7vuBlcDINNe1wt3r74r0JtA7nf0lI8mahgGV7r7d3Y8AzwFj0ljTJnffkq7jt1SSdWX0XAXHnh8szweuT2NfzUnm+25Y6++Aq6z+jmHZrSvj3P1VYF8zTcYAz3idN4HTzKxnGH23usAHMLNfmtkO4H8B9yZo0gvY0WB9Z7AtU8ZT9xs8EQdWmNlaM5uYAzVl+1w1JVvnqTmZPldnuPuHAMHX05toV2JmFWb2ppml45dCMt93vE0wyPgM6JqGWk62LoAbg6mT35lZnzTXlIy0PY/y8m6ZZrYK6JFgV7m7L3b3cqDczP4VmAxMO/4QCf5tytennqiuoE05UAv8ponDXObuu83sdGClmW0ORgTZqin0c5VMTUkI9TyFVFdGz9VJHOas4Fz1A/5gZu+4+3up1HWcZL7vtPzMnUAyfb4ILHD3w2b2fer+Cvkfaa7rRNJ2rvIy8N396iSbPgv8J40DfycwvMF6b+rmZtNaV/Di8P8ErvJgsi7BMXYHX/eY2X9Q92dpi4MshJp2Ag1HPb2B3S2tJ5makjxGqOcppLoyeq7M7GMz6+nuHwZ/8u9p4hj152q7mb0CXETd3HZYkvm+69vsNLMi4FSan9bISF3uvrfB6lzqXsvKttCfR/Va3ZSOmQ1osDoa2Jyg2XLgGjPrHFzZcE2wLZ11jQSmAKPd/WATbTqY2Sn1y0FdCV/Jz1RNwBpggJmdY2bF1L3glpYrPZKV6fN0EjJ9rpYA9VeY3QY0+iskeI63DZa7AZcBG0OuI5nvu2GtNwF/aGrQk8m6jpsbHw1sSnNNyVgC/HNwtc4lwGf1U3cpy+Sr05l4AIuo++F/m7o/13oF28uAf2/QbjxQGTzuyEBdldTNy60PHvVXLJwJLA2W+1F3JcFbwLvUTSVktSb/76sGtlI3Kkx3TTdQN8I5DHwMLM/2eUq2riycq67AS8C24GuXYHv8uQ78A/BOcK7eAe5MUy2Nvm9gOnWDCYAS4LfBc+4vQL90/58lWde/Bc+ht4CXgfMyUNMC4EOgJnhO3Ql8H/h+sN+AXwc1v0MzV6ud7EO3VhARiYhWN6UjIiKJKfBFRCJCgS8iEhEKfBGRiFDgi4hEhAJfRCQiFPgiIhHxX+8LimLV3I0eAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "x = np.linspace(-5, 5, 5)\n",
    "X, Y = np.meshgrid(x, x)\n",
    "U, V = 12 * X, 12 * Y\n",
    "\n",
    "data = [(-1.5, .5, -6, -6),\n",
    "        (1, -1, -46, 46),\n",
    "        (-3, -1, 11, -11),\n",
    "        (1, 1.5, 80, 80),\n",
    "        (0.5, 0.25, 25, 15),\n",
    "        (-1.5, -0.5, -5, 40)]\n",
    "\n",
    "data = np.array(data, dtype=[('x', np.float32), ('y', np.float32),\n",
    "                             ('u', np.float32), ('v', np.float32)])\n",
    "\n",
    "fig1, axs1 = plt.subplots(nrows=2, ncols=2)\n",
    "# Default parameters, uniform grid\n",
    "axs1[0, 0].barbs(X, Y, U, V)\n",
    "\n",
    "# Arbitrary set of vectors, make them longer and change the pivot point\n",
    "# (point around which they're rotated) to be the middle\n",
    "axs1[0, 1].barbs(\n",
    "    data['x'], data['y'], data['u'], data['v'], length=8, pivot='middle')\n",
    "\n",
    "# Showing colormapping with uniform grid.  Fill the circle for an empty barb,\n",
    "# don't round the values, and change some of the size parameters\n",
    "axs1[1, 0].barbs(\n",
    "    X, Y, U, V, np.sqrt(U ** 2 + V ** 2), fill_empty=True, rounding=False,\n",
    "    sizes=dict(emptybarb=0.25, spacing=0.2, height=0.3))\n",
    "\n",
    "# Change colors as well as the increments for parts of the barbs\n",
    "axs1[1, 1].barbs(data['x'], data['y'], data['u'], data['v'], flagcolor='r',\n",
    "                 barbcolor=['b', 'g'], flip_barb=True,\n",
    "                 barb_increments=dict(half=10, full=20, flag=100))\n",
    "\n",
    "# Masked arrays are also supported\n",
    "masked_u = np.ma.masked_array(data['u'])\n",
    "masked_u[4] = 1000  # Bad value that should not be plotted when masked\n",
    "masked_u[4] = np.ma.masked\n",
    "\n",
    "# Identical plot to panel 2 in the first figure, but with the point at\n",
    "# (0.5, 0.25) missing (masked)\n",
    "fig2, ax2 = plt.subplots()\n",
    "ax2.barbs(data['x'], data['y'], masked_u, data['v'], length=8, pivot='middle')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib import cm\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "\n",
    "X = np.arange(30*np.pi/180, 89*np.pi/180, np.pi/180)\n",
    "Y = np.arange(0, 360*np.pi/180, np.pi/180)\n",
    "X, Y = np.meshgrid(X, Y)\n",
    "Z = np.sin(Y)/np.tan(X)\n",
    "\n",
    "\n",
    "fig = plt.figure()\n",
    "ax = Axes3D(fig)\n",
    "ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='summer')\n",
    "ax.set_xlabel('x')\n",
    "ax.set_ylabel('y')\n",
    "ax.set_zlabel('z')\n",
    "ax.set_zlim(-1.5,1.5)\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Fixing random state for reproducibility\n",
    "np.random.seed(19680801)\n",
    "\n",
    "dt = 0.01\n",
    "t = np.arange(0, 30, dt)\n",
    "nse1 = np.random.randn(len(t))                 # white noise 1\n",
    "nse2 = np.random.randn(len(t))                 # white noise 2\n",
    "\n",
    "# Two signals with a coherent part at 10Hz and a random part\n",
    "s1 = np.sin(2 * np.pi * 10 * t) + nse1\n",
    "s2 = np.sin(2 * np.pi * 10 * t) + nse2\n",
    "\n",
    "fig, axs = plt.subplots(2, 1)\n",
    "axs[0].plot(t, s1, t, s2)\n",
    "axs[0].set_xlim(0, 2)\n",
    "axs[0].set_xlabel('time')\n",
    "axs[0].set_ylabel('s1 and s2')\n",
    "axs[0].grid(True)\n",
    "\n",
    "cxy, f = axs[1].cohere(s1, s2, 256, 1. / dt)\n",
    "axs[1].set_ylabel('coherence')\n",
    "\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1]\n",
      "[1, 1]\n",
      "[1, 2, 1]\n",
      "[1, 3, 3, 1]\n",
      "[1, 4, 6, 4, 1]\n",
      "[1, 5, 10, 10, 5, 1]\n",
      "[1, 6, 15, 20, 15, 6, 1]\n",
      "[1, 7, 21, 35, 35, 21, 7, 1]\n",
      "[1, 8, 28, 56, 70, 56, 28, 8, 1]\n",
      "[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]\n"
     ]
    }
   ],
   "source": [
    "def generate(numRows):\n",
    "    r = [[1]]\n",
    "    for i in range(1,numRows):\n",
    "        r.append(list(map(lambda x,y:x+y, [0]+r[-1],r[-1]+[0])))\n",
    "    return r[:numRows]\n",
    "a=generate(10)\n",
    "for i in a:\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\Anaconda\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'china':'https://assets.pyecharts.org/assets/maps/china'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"b4f949ba0c15404380ef96f2e48f4633\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'china'], function(echarts) {\n",
       "                var chart_b4f949ba0c15404380ef96f2e48f4633 = echarts.init(\n",
       "                    document.getElementById('b4f949ba0c15404380ef96f2e48f4633'), 'white', {renderer: 'canvas'});\n",
       "                var option_b4f949ba0c15404380ef96f2e48f4633 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"heatmap\",\n",
       "            \"coordinateSystem\": \"geo\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5e7f\\u4e1c\",\n",
       "                    \"value\": [\n",
       "                        113.26653,\n",
       "                        23.132191,\n",
       "                        32\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5317\\u4eac\",\n",
       "                    \"value\": [\n",
       "                        116.407526,\n",
       "                        39.90403,\n",
       "                        65\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77\",\n",
       "                    \"value\": [\n",
       "                        121.473701,\n",
       "                        31.230416,\n",
       "                        136\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u897f\",\n",
       "                    \"value\": [\n",
       "                        115.909228,\n",
       "                        28.675696,\n",
       "                        30\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6e56\\u5357\",\n",
       "                    \"value\": [\n",
       "                        112.98381,\n",
       "                        28.112444,\n",
       "                        56\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6d59\\u6c5f\",\n",
       "                    \"value\": [\n",
       "                        120.152791,\n",
       "                        30.267446,\n",
       "                        45\n",
       "                    ]\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u82cf\",\n",
       "                    \"value\": [\n",
       "                        118.763232,\n",
       "                        32.061707,\n",
       "                        94\n",
       "                    ]\n",
       "                }\n",
       "            ],\n",
       "            \"pointSize\": 20,\n",
       "            \"blurSize\": 20,\n",
       "            \"label\": {\n",
       "                \"show\": false,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"rippleEffect\": {\n",
       "                \"show\": true,\n",
       "                \"brushType\": \"stroke\",\n",
       "                \"scale\": 2.5,\n",
       "                \"period\": 4\n",
       "            }\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"formatter\": function (params) {        return params.name + ' : ' + params.value[2];    },\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Geo-\\u70ed\\u529b\\u5730\\u56fe\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ],\n",
       "    \"visualMap\": {\n",
       "        \"show\": true,\n",
       "        \"type\": \"continuous\",\n",
       "        \"min\": 0,\n",
       "        \"max\": 100,\n",
       "        \"inRange\": {\n",
       "            \"color\": [\n",
       "                \"#50a3ba\",\n",
       "                \"#eac763\",\n",
       "                \"#d94e5d\"\n",
       "            ]\n",
       "        },\n",
       "        \"calculable\": true,\n",
       "        \"inverse\": false,\n",
       "        \"splitNumber\": 5,\n",
       "        \"orient\": \"vertical\",\n",
       "        \"showLabel\": true,\n",
       "        \"itemWidth\": 20,\n",
       "        \"itemHeight\": 140,\n",
       "        \"borderWidth\": 0\n",
       "    },\n",
       "    \"geo\": {\n",
       "        \"map\": \"china\",\n",
       "        \"roam\": true,\n",
       "        \"emphasis\": {}\n",
       "    }\n",
       "};\n",
       "                chart_b4f949ba0c15404380ef96f2e48f4633.setOption(option_b4f949ba0c15404380ef96f2e48f4633);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x2197faa4908>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Program Files\\Anaconda\\lib\\site-packages\\pyecharts\\charts\\chart.py:14: PendingDeprecationWarning: pyecharts 所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 :)\n",
      "  super().__init__(init_opts=init_opts)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "<script>\n",
       "    require.config({\n",
       "        paths: {\n",
       "            'echarts':'https://assets.pyecharts.org/assets/echarts.min', 'china':'https://assets.pyecharts.org/assets/maps/china'\n",
       "        }\n",
       "    });\n",
       "</script>\n",
       "\n",
       "        <div id=\"08160c282e644ffdb798481a12bef1d4\" style=\"width:900px; height:500px;\"></div>\n",
       "\n",
       "<script>\n",
       "        require(['echarts', 'china'], function(echarts) {\n",
       "                var chart_08160c282e644ffdb798481a12bef1d4 = echarts.init(\n",
       "                    document.getElementById('08160c282e644ffdb798481a12bef1d4'), 'white', {renderer: 'canvas'});\n",
       "                var option_08160c282e644ffdb798481a12bef1d4 = {\n",
       "    \"animation\": true,\n",
       "    \"animationThreshold\": 2000,\n",
       "    \"animationDuration\": 1000,\n",
       "    \"animationEasing\": \"cubicOut\",\n",
       "    \"animationDelay\": 0,\n",
       "    \"animationDurationUpdate\": 300,\n",
       "    \"animationEasingUpdate\": \"cubicOut\",\n",
       "    \"animationDelayUpdate\": 0,\n",
       "    \"color\": [\n",
       "        \"#c23531\",\n",
       "        \"#2f4554\",\n",
       "        \"#61a0a8\",\n",
       "        \"#d48265\",\n",
       "        \"#749f83\",\n",
       "        \"#ca8622\",\n",
       "        \"#bda29a\",\n",
       "        \"#6e7074\",\n",
       "        \"#546570\",\n",
       "        \"#c4ccd3\",\n",
       "        \"#f05b72\",\n",
       "        \"#ef5b9c\",\n",
       "        \"#f47920\",\n",
       "        \"#905a3d\",\n",
       "        \"#fab27b\",\n",
       "        \"#2a5caa\",\n",
       "        \"#444693\",\n",
       "        \"#726930\",\n",
       "        \"#b2d235\",\n",
       "        \"#6d8346\",\n",
       "        \"#ac6767\",\n",
       "        \"#1d953f\",\n",
       "        \"#6950a1\",\n",
       "        \"#918597\"\n",
       "    ],\n",
       "    \"series\": [\n",
       "        {\n",
       "            \"type\": \"map\",\n",
       "            \"name\": \"\\u5546\\u5bb6A\",\n",
       "            \"label\": {\n",
       "                \"show\": true,\n",
       "                \"position\": \"top\",\n",
       "                \"margin\": 8\n",
       "            },\n",
       "            \"mapType\": \"china\",\n",
       "            \"data\": [\n",
       "                {\n",
       "                    \"name\": \"\\u5e7f\\u4e1c\",\n",
       "                    \"value\": 39\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u5317\\u4eac\",\n",
       "                    \"value\": 65\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u4e0a\\u6d77\",\n",
       "                    \"value\": 120\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u897f\",\n",
       "                    \"value\": 100\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6e56\\u5357\",\n",
       "                    \"value\": 26\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6d59\\u6c5f\",\n",
       "                    \"value\": 111\n",
       "                },\n",
       "                {\n",
       "                    \"name\": \"\\u6c5f\\u82cf\",\n",
       "                    \"value\": 109\n",
       "                }\n",
       "            ],\n",
       "            \"roam\": true,\n",
       "            \"zoom\": 1,\n",
       "            \"showLegendSymbol\": true,\n",
       "            \"emphasis\": {}\n",
       "        }\n",
       "    ],\n",
       "    \"legend\": [\n",
       "        {\n",
       "            \"data\": [\n",
       "                \"\\u5546\\u5bb6A\"\n",
       "            ],\n",
       "            \"selected\": {\n",
       "                \"\\u5546\\u5bb6A\": true\n",
       "            },\n",
       "            \"show\": true,\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10,\n",
       "            \"itemWidth\": 25,\n",
       "            \"itemHeight\": 14\n",
       "        }\n",
       "    ],\n",
       "    \"tooltip\": {\n",
       "        \"show\": true,\n",
       "        \"trigger\": \"item\",\n",
       "        \"triggerOn\": \"mousemove|click\",\n",
       "        \"axisPointer\": {\n",
       "            \"type\": \"line\"\n",
       "        },\n",
       "        \"showContent\": true,\n",
       "        \"alwaysShowContent\": false,\n",
       "        \"showDelay\": 0,\n",
       "        \"hideDelay\": 100,\n",
       "        \"textStyle\": {\n",
       "            \"fontSize\": 14\n",
       "        },\n",
       "        \"borderWidth\": 0,\n",
       "        \"padding\": 5\n",
       "    },\n",
       "    \"title\": [\n",
       "        {\n",
       "            \"text\": \"Map-\\u57fa\\u672c\\u793a\\u4f8b\",\n",
       "            \"padding\": 5,\n",
       "            \"itemGap\": 10\n",
       "        }\n",
       "    ]\n",
       "};\n",
       "                chart_08160c282e644ffdb798481a12bef1d4.setOption(option_08160c282e644ffdb798481a12bef1d4);\n",
       "        });\n",
       "    </script>\n"
      ],
      "text/plain": [
       "<pyecharts.render.display.HTML at 0x21900df4ac8>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "ename": "SyntaxError",
     "evalue": "invalid syntax (<ipython-input-58-f40686370cd5>, line 8)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;36m  File \u001b[1;32m\"<ipython-input-58-f40686370cd5>\"\u001b[1;36m, line \u001b[1;32m8\u001b[0m\n\u001b[1;33m    )\u001b[0m\n\u001b[1;37m     ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n"
     ]
    }
   ],
   "source": [
    "def add_coordinate(\n",
    "  # 坐标地点名称\n",
    "  name: str,\n",
    "  # 经度\n",
    "  longitude: Numeric,\n",
    "  # 纬度\n",
    "  latitude: Numeric,\n",
    ")\n",
    "\n",
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Geo\n",
    "from pyecharts .globals import ChartType, SymbolType, GeoType\n",
    "\n",
    "geo = Geo()\n",
    "\n",
    "# 新增坐标点，添加名称跟经纬度\n",
    "geo.add_coordinate(name=\"China\",longitude=104.195,latitude=35.675)\n",
    "geo.add_coordinate(name=\"Australia\",longitude=133.775,latitude=-25.274)\n",
    "geo.add_coordinate(name=\"Brazil\",longitude=-51.925,latitude=-14.235)\n",
    "geo.add_coordinate(name=\"South Africa\",longitude=22.937,latitude=-30.559)\n",
    "geo.add_coordinate(name=\"India\",longitude=78.962,latitude=20.593)\n",
    "geo.add_coordinate(name=\"Peru\",longitude=-75.015,latitude=-9.189)\n",
    "geo.add_coordinate(name=\"Iran\",longitude=53.688,latitude=32.427)\n",
    "geo.add_coordinate(name=\"Ukraine\",longitude=31.165,latitude=48.379)\n",
    "geo.add_coordinate(name=\"Canada\",longitude=-106.346,latitude=56.130)\n",
    "geo.add_coordinate(name=\"Mongolia\",longitude=103.847,latitude=46.862)\n",
    "geo.add_coordinate(name=\"Russia\",longitude=37.618,latitude=55.751)\n",
    "geo.add_coordinate(name=\"Mauritania\",longitude=21.008,latitude=-10.941)\n",
    "geo.add_coordinate(name=\"Kazakhstan\",longitude=66.924,latitude=48.019)\n",
    "geo.add_coordinate(name=\"UAE\",longitude=53.848,latitude=23.424)\n",
    "geo.add_coordinate(name=\"Malaysia\",longitude=101.976,latitude=4.210)\n",
    "geo.add_coordinate(name=\"New Zealand\",longitude=174.886,latitude=-40.900)\n",
    "geo.add_coordinate(name=\"Indonesia\",longitude=113.921,latitude=-0.789)\n",
    "geo.add_coordinate(name=\"Sweden\",longitude=18.643,latitude=60.128)\n",
    "geo.add_coordinate(name=\"Mexico\",longitude=-102.553,latitude=23.634)\n",
    "geo.add_coordinate(name=\"Sierra Leone\",longitude=-11.779,latitude=8.461)\n",
    "\n",
    "# 添加数据项\n",
    "geo.add_schema(maptype=\"world\")\n",
    "geo.add(\"\",[(\"Australia\",128326),\n",
    "      (\"Brazil\",44037),\n",
    "      (\"South Africa\",7649),\n",
    "      (\"India\",3562),\n",
    "      (\"Peru\",2779),\n",
    "      (\"Iran\",2698),\n",
    "      (\"Ukrainie\",2040),\n",
    "      (\"Canada\",1792),\n",
    "      (\"Mongolia\",1514),\n",
    "      (\"Russia\",1069),\n",
    "      (\"Mauritania\",1374),\n",
    "      (\"Kazakhsan\",701),\n",
    "      (\"UAE\",490),\n",
    "      (\"Malaysia\",554),\n",
    "      (\"New Zealand\",422),\n",
    "      (\"Indonesia\",148),\n",
    "      (\"Sweden\",113),\n",
    "      (\"Mexico\",121),\n",
    "      (\"Sierra Leone\",109),\n",
    "      ],type_=ChartType.EFFECT_SCATTER)\n",
    "\n",
    "# 绘制流向\n",
    "geo.add(\"流向图\",[\n",
    "  (\"Australia\",\"China\"),\n",
    "  (\"Brazil\",\"China\"),\n",
    "  (\"South Africa\",\"China\"),\n",
    "  (\"India\",\"China\"),\n",
    "  (\"Peru\",\"China\"),\n",
    "  (\"Iran\",\"China\"),\n",
    "  (\"Ukraine\",\"China\"),\n",
    "  (\"Canada\",\"China\"),\n",
    "  (\"Mongolia\",\"China\"),\n",
    "  (\"Russia\",\"China\"),\n",
    "  (\"Mauritania\",\"China\"),\n",
    "  (\"Kazakhstan\",\"China\"),\n",
    "  (\"UAE\",\"China\"),\n",
    "  (\"Malaysia\",\"China\"),\n",
    "  (\"New Zealand\",\"China\"),\n",
    "  (\"Indonesia\",\"China\"),\n",
    "  (\"Sweden\",\"China\"),\n",
    "  (\"Mexico\",\"China\"),\n",
    "  (\"Sierra Leone\",\"China\"),\n",
    "      ],\n",
    "    type_= GeoType.LINES,\n",
    "   effect_opts=opts.EffectOpts(symbol=SymbolType.ARROW,symbol_size=5,color=\"yellow\"),\n",
    "    linestyle_opts=opts.LineStyleOpts(curve=0.2),\n",
    "    )\n",
    "\n",
    "geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
    "geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=130000),title_opts=opts.TitleOpts(title=\"mygeo\"))\n",
    "geo.render()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# python如何读写excel文件\n",
    "\n",
    "python读写excel的方式有很多，不同的模块在读写的方法上稍有区别：\n",
    "\n",
    "用xlrd和xlwt进行excel读写；\n",
    "\n",
    "用openpyxl进行excel读写；\n",
    "\n",
    "用pandas进行excel读写；\n",
    "## 用xlrd读写excel：\n",
    "### 用xlrd读excel："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "表格总行数 71\n",
      "表格总列数 8\n",
      "第1行值 ['年', '浑南', '新民', '辽中', '康平', '法库', '沈北', '苏家屯']\n",
      "第1列值 ['1951年', '1952年', '1953年', '1954年', '1955年', '1956年', '1957年', '1958年', '1959年', '1960年', '1961年', '1962年', '1963年', '1964年', '1965年', '1966年', '1967年', '1968年', '1969年', '1970年', '1971年', '1972年', '1973年', '1974年', '1975年', '1976年', '1977年', '1978年', '1979年', '1980年', '1981年', '1982年', '1983年', '1984年', '1985年', '1986年', '1987年', '1988年', '1989年', '1990年', '1991年', '1992年', '1993年', '1994年', '1995年', '1996年', '1997年', '1998年', '1999年', '2000年', '2001年', '2002年', '2003年', '2004年', '2005年', '2006年', '2007年', '2008年', '2009年', '2010年', '2011年', '2012年', '2013年', '2014年', '2015年', '2016年', '2017年', '2018年', '2019年', '']\n",
      "第2列值 [915.3, 613.9, 1054.7, 974.0, 629.3, 904.1, 970.3, 559.3, 920.2, 813.6, 564.1, 685.7, 738.9, 895.3, 445.0, 712.5, 529.6, 583.8, 799.7, 797.8, 742.6, 586.1, 875.5, 805.3, 759.7, 653.9, 653.9, 578.2, 652.5, 618.3, 583.0, 552.0, 763.9, 718.1, 810.8, 969.5, 724.9, 629.7, 467.4, 642.4, 748.9, 554.0, 633.7, 893.1, 880.7, 721.9, 571.8, 857.6, 561.2, 501.5, 583.8, 739.2, 652.4, 705.2, 822.2, 576.3, 672.3, 718.7, 657.7, 1036.6, 477.9, 786.0, 788.0, 362.9, 573.4, 968.0, 464.4, 482.6, 873.8, '东陵']\n",
      "第3行值 ['1952年', 613.9, '', '', '', '', '', '']\n",
      "第3列值 ['新民', '', '', '', '', 617.2, 657.4, 695.1, 456.0, 762.5, 825.3, 507.2, 496.2, 500.2, 810.0, 510.3, 527.6, 380.2, 497.1, 659.6, 627.0, 632.9, 486.0, 626.9, 716.9, 720.0, 605.7, 709.9, 544.4, 817.8, 401.9, 445.7, 362.9, 543.4, 667.3, 693.3, 811.3, 604.9, 536.2, 378.4, 634.3, 854.7, 403.3, 476.7, 1012.8, 690.2, 499.3, 673.0, 817.5, 489.7, 417.7, 351.6, 357.0, 537.6, 511.6, 616.7, 319.1, 408.3, 594.5, 613.0, 1042.3, 588.4, 854.7, 653.8, 380.6, 445.2, 782.4, 566.8, 296.2, 731.5, '新民']\n",
      "第3行第3列的单元格的值： \n"
     ]
    }
   ],
   "source": [
    "import xlrd\n",
    "filename=\"沈阳常规气象站年降水量（1951-2019）.xlsx\"\n",
    "book = xlrd.open_workbook(filename)\n",
    "sheet1 = book.sheets()[0]\n",
    "nrows = sheet1.nrows\n",
    "print('表格总行数',nrows)\n",
    "ncols = sheet1.ncols\n",
    "print('表格总列数',ncols)\n",
    "\n",
    "row1_values = sheet1.row_values(0)\n",
    "print('第1行值',row1_values)\n",
    "col1_values = sheet1.col_values(colx=0,start_rowx=1)\n",
    "print('第1列值',col1_values)\n",
    "\n",
    "col2_values = sheet1.col_values(colx=1,start_rowx=1)\n",
    "\n",
    "print('第2列值',col2_values)\n",
    "\n",
    "row3_values = sheet1.row_values(2)\n",
    "print('第3行值',row3_values)\n",
    "\n",
    "col3_values = sheet1.col_values(2)\n",
    "print('第3列值',col3_values)\n",
    "\n",
    "cell_3_3 = sheet1.cell(2,2).value\n",
    "print('第3行第3列的单元格的值：',cell_3_3)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### xlwt写excel"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "workbook = xlwt.Workbook()\n",
    "worksheet = workbook.add_sheet('test')\n",
    "worksheet.write(0,0,'A1data')\n",
    "workbook.save('excelwrite.xls')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 利用openpyxl读写excel，注意这里只能是xlsx类型的excel\n",
    "### 利用openpyxl读excel"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "import openpyxl\n",
    "\n",
    "workbook = openpyxl.load_workbook('data.xlsx')\n",
    "\n",
    "worksheet = workbook.get_sheet_by_name('Sheet1')\n",
    "\n",
    "row3=[item.value for item in list(worksheet.rows)[2]]\n",
    "\n",
    "print('第3行值',row3)\n",
    "\n",
    "col3=[item.value for item in list(worksheet.columns)[2]]\n",
    "\n",
    "print('第3行值',col3)\n",
    "\n",
    "cell_2_3=worksheet.cell(row=2,column=3).value\n",
    "\n",
    "print('第2行第3列值',cell_2_3)\n",
    "\n",
    "max_row=worksheet.max_row\n",
    "\n",
    "print('最大行',max_row)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 利用pandas读取excel\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "       年      浑南     新民     辽中     康平     法库   沈北  苏家屯\n",
      "0  1951年   915.3    NaN    NaN    NaN    NaN  NaN  NaN\n",
      "1  1952年   613.9    NaN    NaN    NaN    NaN  NaN  NaN\n",
      "2  1953年  1054.7    NaN    NaN    NaN    NaN  NaN  NaN\n",
      "3  1954年     974    NaN    NaN    NaN    NaN  NaN  NaN\n",
      "4  1955年   629.3  617.2  535.8  534.3  542.9  NaN  NaN\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\xlrd\\xlsx.py:266: PendingDeprecationWarning: This method will be removed in future versions.  Use 'tree.iter()' or 'list(tree.iter())' instead.\n",
      "  for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():\n",
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\xlrd\\xlsx.py:312: PendingDeprecationWarning: This method will be removed in future versions.  Use 'tree.iter()' or 'list(tree.iter())' instead.\n",
      "  for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "filename=\"沈阳常规气象站年降水量（1951-2019）.xlsx\"\n",
    "df = pd.read_excel(filename)\n",
    "print(df.head())\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello world !\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
      "  and should_run_async(code)\n"
     ]
    }
   ],
   "source": [
    "print(\"Hello world !\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "目录",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "246px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
